JPanel을 확장하는 클래스가 있습니다.이 패널 안에는 많은 textField가 추가되었습니다. TextListener를 모든 textField에 추가하여 텍스트 변경 사항을 감지하고 txtField의 bachground를 빨간색으로 변경하려고합니다. 다음과 같이했지만 아직 작동하지 않습니다.패널 내부의 JTextFields에 Listener를 추가하는 방법은 무엇입니까?
누구든지 해결할 수 있습니까? 아니면 새로운 제안을 환영합니까?
public class MainDetailPanel extends JPanel implements DocumentListener{
public JLabel lblS_DWLDIRPRDPIC,lblL_DWLDIRPRD,lblS_UPLDIR,lblL_UPLDIR,lblS_DWLDIRPRD;
public JLabel lblFTP_DEFDIR,lblFTP_SERVER,lblFTP_POORT,lblFTP_USER,lblFTP_PASWOORD,lblL_CFDIR;
public JLabel lblL_DWLDIRPRDPIC,lblS_CFDIR,lblS_CFNAME,lblS_DWLNAMEPRD,lblS_DWLNAMEPRDPIC;
public JTextField txtL_DWLDIRPRD,txtS_DWLDIRPRDPIC,txtL_UPLDIR,txtS_DWLNAMEPRDPIC,txtL_CFDIR;
public JTextField txtFTP_DEFDIR,txtFTP_SERVER,txtFTP_POORT,txtFTP_USER,txtFTP_PASWOORD,txtS_UPLDIR;
public JTextField txtL_DWLDIRPRDPIC,txtS_CFDIR,txtS_CFNAME,txtS_DWLNAMEPRD,txtS_DWLDIRPRD;
public MainDetailPanel() {
createComponents();
layoutComponents();
}
private void createComponents() {
txtL_DWLDIRPRD = new JTextField(30);
txtL_DWLDIRPRD.getDocument().addDocumentListener(this);
txtS_DWLDIRPRDPIC = new JTextField(30);
txtL_UPLDIR = new JTextField(30);
txtS_DWLNAMEPRDPIC = new JTextField(30);
txtFTP_DEFDIR = new JTextField(30);
txtFTP_SERVER = new JTextField(30);
txtFTP_POORT = new JTextField(30);
txtFTP_USER = new JTextField(30);
txtFTP_PASWOORD = new JTextField(30);
txtL_CFDIR = new JTextField(30);
txtL_DWLDIRPRDPIC = new JTextField(30);
txtS_UPLDIR = new JTextField(30);
txtS_CFDIR = new JTextField(30);
txtS_CFNAME = new JTextField(30);
txtS_DWLNAMEPRD = new JTextField(30);
txtS_DWLDIRPRD = new JTextField(30);
lblFTP_DEFDIR = new JLabel("FTP_DEFDIR");
lblFTP_SERVER = new JLabel("FTP_SERVER");
lblFTP_POORT = new JLabel("FTP_POORT");
lblFTP_USER = new JLabel("FTP_USER");
lblFTP_PASWOORD = new JLabel("FTP_PASWOORD");
lblL_CFDIR = new JLabel("L_CFDIR");
lblL_UPLDIR = new JLabel("L_UPLDIR");
lblL_DWLDIRPRDPIC = new JLabel("L_DWLDIRPRDPIC");
lblS_CFDIR = new JLabel("S_CFDIR");
lblS_CFNAME = new JLabel("S_CFNAME");
lblS_DWLNAMEPRD = new JLabel("S_DWLNAMEPRD");
lblS_DWLDIRPRD = new JLabel("S_DWLDIRPRD");
lblS_DWLNAMEPRDPIC = new JLabel("S_DWLNAMEPRDPIC");
lblS_UPLDIR = new JLabel("S_UPLDIR");
lblS_DWLDIRPRDPIC = new JLabel("lblS_DWLDIRPRDPIC");
lblL_DWLDIRPRD = new JLabel("lblL_DWLDIRPRD");
}
private void layoutComponents() {
setLayout(new ParagraphLayout());
add(lblFTP_DEFDIR, ParagraphLayout.NEW_PARAGRAPH);
add(txtFTP_DEFDIR);
add(lblFTP_SERVER, ParagraphLayout.NEW_PARAGRAPH);
add(txtFTP_SERVER);
add(lblFTP_POORT, ParagraphLayout.NEW_PARAGRAPH);
add(txtFTP_POORT);
add(lblFTP_USER, ParagraphLayout.NEW_PARAGRAPH);
add(txtFTP_USER);
add(lblFTP_PASWOORD, ParagraphLayout.NEW_PARAGRAPH);
add(txtFTP_PASWOORD);
add(lblL_CFDIR, ParagraphLayout.NEW_PARAGRAPH);
add(txtL_CFDIR);
add(lblL_UPLDIR, ParagraphLayout.NEW_PARAGRAPH);
add(txtL_UPLDIR);
add(lblL_DWLDIRPRD, ParagraphLayout.NEW_PARAGRAPH);
add(txtL_DWLDIRPRD);
add(lblL_DWLDIRPRDPIC, ParagraphLayout.NEW_PARAGRAPH);
add(txtL_DWLDIRPRDPIC);
add(lblS_UPLDIR, ParagraphLayout.NEW_PARAGRAPH);
add(txtS_UPLDIR);
add(lblS_CFDIR, ParagraphLayout.NEW_PARAGRAPH);
add(txtS_CFDIR);
add(lblS_CFNAME, ParagraphLayout.NEW_PARAGRAPH);
add(txtS_CFNAME);
add(lblS_DWLNAMEPRD, ParagraphLayout.NEW_PARAGRAPH);
add(txtS_DWLNAMEPRD);
add(lblS_DWLDIRPRD, ParagraphLayout.NEW_PARAGRAPH);
add(txtS_DWLDIRPRD);
add(lblS_DWLNAMEPRDPIC, ParagraphLayout.NEW_PARAGRAPH);
add(txtS_DWLNAMEPRDPIC);
add(lblS_DWLDIRPRDPIC, ParagraphLayout.NEW_PARAGRAPH);
add(txtS_DWLDIRPRDPIC);
}
public void insertUpdate(DocumentEvent e) {
((JTextField)e.getDocument()).setBackground(Color.red);
}
public void removeUpdate(DocumentEvent e) {
((JTextField)e.getDocument()).setBackground(Color.red);
}
public void changedUpdate(DocumentEvent e) {
((JTextField)e.getDocument()).setBackground(Color.red);
}
}
작동하지 않는 기능은 무엇입니까? 너는 무엇을 기대하며, 대신에 어떤 일이 일어나는가? –
스레드 "AWT-EventQueue-1"예외 java.lang.ClassCastException : javax.swing.text.PlainDocument at de.util.scanners.view.MainDetailPanel.insertUpdate (MainDe tailPanel.java:107) – itro