【问题标题】:enable a jcombobox without pressing enter无需按 Enter 即可启用 jcombobox
【发布时间】:2016-03-06 20:48:35
【问题描述】:
我在 netbeans 中使用 java swing。
我有一个文本字段。我希望只有在文本字段中写入的文本大于一个时才会启用组合框。
如果我按回车键,我的代码就可以工作。但我想通过在文本字段中写入来使其工作。我该怎么做?
private void nmrintervTXTActionPerformed(java.awt.event.ActionEvent evt) {
String text = this.nmrintervTXT.getText();
System.out.println(text);
if (!text.isEmpty()) {
if (Integer.parseInt(text) > 1) {
this.evidenceOtherApplicantsTXT.setEnabled(true);
}
}
}
【问题讨论】:
标签:
java
swing
netbeans
jtextfield
enter
【解决方案1】:
请参阅addCaretListener API。
textfield.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
System.out.println("caretUpdate with new text: "+textfield.getText());
}
});
【解决方案2】:
类 MyDocumentListener 实现 DocumentListener {
@Override
public void insertUpdate(javax.swing.event.DocumentEvent e) {
update(e);
}
@Override
public void removeUpdate(javax.swing.event.DocumentEvent e) {
update(e);
}
@Override
public void changedUpdate(javax.swing.event.DocumentEvent e) {
}
public void update(javax.swing.event.DocumentEvent e) {
String text = nmrintervTXT.getText();
try {
evidenceOtherApplicantsTXT.setEnabled(Integer.parseInt(text) > 1);
} catch (NumberFormatException nfe) {
evidenceOtherApplicantsTXT.setEnabled(false);
}
}
}
public MyClass() {
initComponents();
}
@SuppressWarnings("unchecked")
nmrintervTXT = new javax.swing.JTextField();
nmrintervTXT.getDocument().addDocumentListener(new MyDocumentListener());
我认为参数 e 在 MyDocumentListener 中更新时出错。