【问题标题】:I cannot find a proper Listener for my Program in Java我在 Java 中找不到适合我的程序的侦听器
【发布时间】:2013-12-29 00:26:00
【问题描述】:

我希望我的程序能够监听一个文本字段,并且必须允许用户只输入数字字符。如果用户键入非数字字符,程序不应显示该字符。无论我做什么,我都无法应对。你能帮我解决这个问题吗?这是我的代码

包文本字段监听器;

import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.BorderLayout;
import java.awt.GridLayout;
public class Components extends JFrame {

private JTextField comp1 = new JTextField(20);
private JTextField comp2 = new JTextField(20);
private JButton button1 = new JButton("Run");
private JButton button2 = new JButton("Delete");
private JPanel panel1 = new JPanel();
private StringBuffer input1 = new StringBuffer("");
private StringBuffer input2 = new StringBuffer("");
public Components()
{

    panel1.setLayout(new GridLayout(2,2,10,10));
    panel1.add(comp1);
    panel1.add(comp2);
    panel1.add(button1);
    panel1.add(button2);

    setLayout(new BorderLayout());
    add(panel1, BorderLayout.SOUTH);
    comp1.addKeyListener(new KeyAdapter() {


public void keyPressed(KeyEvent e) {

if(e.getKeyCode() == KeyEvent.VK_0 || e.getKeyCode() == KeyEvent.VK_3 ||
  e.getKeyCode() == KeyEvent.VK_1 || e.getKeyCode() == KeyEvent.VK_2 ||
  e.getKeyCode() == KeyEvent.VK_4 || e.getKeyCode() == KeyEvent.VK_5 ||
  e.getKeyCode() == KeyEvent.VK_6 || e.getKeyCode() == KeyEvent.VK_7 ||
  e.getKeyCode() == KeyEvent.VK_8 || e.getKeyCode() == KeyEvent.VK_9)
 {
  input1.append(KeyEvent.getKeyText(e.getKeyCode()));
  comp1.setText(input1.substring(0, input1.length()-1));

 }
else
 {
   if(input1.equals(""))
    {
      comp1.setText(""); 
     }
  else
  {

     comp1.setText(input1.substring(0, input1.length()));
  }
}


}
    });



}

public static void main(String[]args)
{
    Components app = new Components();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    app.setSize(400, 300);
    app.setVisible(true);
}

}

【问题讨论】:

  • 你为什么不先剪掉你目前拥有的代码?
  • 你需要展示你到目前为止所做的尝试,这样我们才能看到你做错了什么
  • 对不起,我是该网站的新用户。我编辑了我的帖子。

标签: java listener


【解决方案1】:

最合适的方法可能是使用DocumentFilter

看...

如果您认为这可能很难,请尝试使用 a;

您还可以考虑在字段失去焦点时使用Input Verifier 来验证文本

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 2012-01-08
    • 2014-01-11
    • 2012-10-06
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多