当动作执行事件时,我在JtextField内部的监听器下方, 以便在用户进行任何更改后对文本框中所做的任何更改执行操作。 但问题是代码没有启动或工作,除非你只按Enter键 代码执行代码,我需要知道我必须添加什么以及在下面的代码启用位置一旦文本Filed立即更改。我可以看到一些类似的帮助引用Oracle监听器帮助但我无法管理所以我需要直接简单的方法。
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
JOptionPane.showMessageDialog(null, "Change case");
}
public void insertUpdate(DocumentEvent de) {
JOptionPane.showMessageDialog(null, "Update Case");
}
public void removeUpdate(DocumentEvent de) {
JOptionPane.showMessageDialog(null, "Remove case");
}
});
// TODO add your handling code here:
}
答案 0 :(得分:4)
ActionListener
仅侦听输入输入键。所以你的代码必须做的是:当按下 键时,在文本字段中添加一个新的DocumentListener
。
DocumentListener
是你想要的,所以从jTextField1ActionPerformed
方法中取出代码(添加文档监听器)并将其放在类的构造函数中。或者有一个私有方法,以免弄乱构造函数。
假设您正在使用Netbeans GUI编辑器(从您的方法签名看起来如此):
public class MyFrame exentds JFrame {
public MyFrame() {
initComponents();
addDocumentListenerToField();
}
private void addDocumentListenerToField() {
jTextField.getDocument().addDocumentListener(..);
}
}
更新:DEMO
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class DocListeenerDemo extends JFrame {
private JTextField field;
private JLabel label;
public DocListeenerDemo() {
initComponents();
addDocumentListenerToField();
}
private void initComponents() {
setLayout(new GridLayout(0, 1));
field = new JTextField(20);
label = new JLabel("", SwingConstants.CENTER);
add(field);
add(label);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setLocationByPlatform(true);
}
private void addDocumentListenerToField() {
field.getDocument().addDocumentListener(new DocumentListener(){
public void changedUpdate(DocumentEvent arg0) {doYourStuff();}
public void insertUpdate(DocumentEvent arg0) {doYourStuff();}
public void removeUpdate(DocumentEvent arg0) {doYourStuff();}
public void doYourStuff() {
label.setText(field.getText());
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
DocListeenerDemo demo = new DocListeenerDemo();
demo.setVisible(true);
}
});
}
}
我还没有找到通过GUI工具添加DocumentListener
的方法。吸。
答案 1 :(得分:0)
尝试使用actionListener
而不是documentListener