【问题标题】:JTextField event listenerJTextField 事件监听器
【发布时间】:2014-08-23 15:24:39
【问题描述】:

使用 Visual Basic 确定何时填充 TextField。用 TextField.Change()。

使用 JavaScript 知道何时填充 TextField。与 onkeyup。

当用户填写我的 JTextField 时,我该如何操作?如果在java中,当按下JButton时,我使用“JButtonActionPerformed”。单击 Jtable 时,我使用“JTableMouseClicked”。

事件我应该使用什么。用于编写 JTextField?

【问题讨论】:

标签: java swing user-interface netbeans jtextfield


【解决方案1】:

“我应该使用什么来编写 JTextField?”

使用DocumentListener 来监听文本字段底层文档的变化

根据您要执行的操作,如果是实时验证,您可能需要考虑改用 DocumentFilter。见例子here


更新

这是一个使用 DocumentListener 的简单示例

import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class DocumentListenerDemo {

    public static JTextField getTextField() {
        final JTextField field = new JTextField(10);
        field.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void removeUpdate(DocumentEvent e) {
                System.out.println(field.getText());    
            }
            @Override
            public void insertUpdate(DocumentEvent e) {
                System.out.println(field.getText());
            }
            @Override
            public void changedUpdate(DocumentEvent e) {}
        });
        return field;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                JOptionPane.showMessageDialog(null, getTextField());
            }
        });
    }
}

【讨论】:

  • tRnPy.getDocument().addDocumentListener(this); InputMap im = tRnPy.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);动作映射 am = tRnPy.getActionMap(); im.put(KeyStroke.getKeyStroke("ESCAPE"), CANCEL_ACTION); am.put(CANCEL_ACTION, 新的 CancelAction());
  • ` 类 CancelAction 扩展 AbstractAction { public void actionPerformed(ActionEvent ev) { tRnPy.setText(""); } } private void cashBack(){ 字符串支付 = tRnPy.getText(); if(paid == "asu"){ lbRnCb.setText(paid); } } public void insertUpdate(DocumentEvent ev) { cashBack(); } public void removeUpdate(DocumentEvent ev) { cashBack(); } public void changedUpdate(DocumentEvent ev) { }`
  • 您只需添加一个新的 DocumentListener 实例,例如 ..addDocumentListener(new DocumentListener(){ // override methods });
  • 查看我的 UPDATE 以获得一个简单的示例
  • 我非常爱你...谢谢....它完全帮助我...哈哈哈...谢谢.... ^_^ :*
【解决方案2】:

JTextField 继承了 java.awt.Component,它有一个方法 http://docs.oracle.com/javase/8/docs/api/java/awt/Component.html#addKeyListener-java.awt.event.KeyListener-,您可以在其中注册一个侦听器并处理正在按下的键。

【讨论】:

  • 没有。 KeyListener 不应该用于文本组件
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 2023-03-14
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
相关资源
最近更新 更多