Java 与不带文本字段的键事件同时更新文本字段
我正在尝试编写一个程序,用户可以输入数字,但不能输入字母或符号。我有一个不可编辑的文本字段,因为我只想在文本字段上显示可接受的用户输入键。这是我的代码的基本结构Java 与不带文本字段的键事件同时更新文本字段,java,swing,jtextfield,keylistener,Java,Swing,Jtextfield,Keylistener,我正在尝试编写一个程序,用户可以输入数字,但不能输入字母或符号。我有一个不可编辑的文本字段,因为我只想在文本字段上显示可接受的用户输入键。这是我的代码的基本结构 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class SampleProgram extends JFrame implements ActionListener, KeyLi
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class SampleProgram extends JFrame implements ActionListener, KeyListener
{
private Container container;
private JPanel panel;
private JTextField textField;
private JButton button;
private String[] names = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
public SampleProgram()
{
container = getContentPane();
panel = new JPanel();
textField = new JTextField();
textField.setEditable(false);
contain.add(textField);
addKeyListener(this);
button = new JButton("Some Action Button");
button.addActionListener(this);
panel.add(button);
container.add(panel);
setResizable(false);
setVisible(true);
}
public void keyPressed(KeyEvent event) {}
public void keyReleased(KeyEvent event) {}
public void keyTyped(KeyEvent event)
{
String action = String.valueOf(event.getKeyChar());
for (String s : names)
if (action.equalsIgnoreCase(s))
{
someAction(action);
return;
}
}
public void actionPerformed(ActionEvent event)
{
String action = ((JButton)event.getSource()).getText();
someAction(action);
}
private void someAction(String input)
{
textField.setText(input);
}
}
这是我的代码的精简版本。我的ActionListener正在做它应该做的事情,但我的KeyListener根本不工作。我也尝试将KeyListener添加到textField,但也没有成功。如何让程序读入用户密钥输入?为了找出错误,我尝试在keyTyped方法中输入code textField.setText(action),我发现我的代码甚至没有输入keyTyped方法。使用
JFormattedTextField
。您可以将掩码格式设置为只允许数字
有关更多信息和示例,请阅读上Swing教程中的部分。在此处查看:谢谢!这很有帮助。你可以考虑使用文档过滤软件谢谢。我会检查一下,然后告诉你我在这方面有多成功。@user1973528,那么你应该接受答案,让其他人知道问题已经解决了。