Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与不带文本字段的键事件同时更新文本字段_Java_Swing_Jtextfield_Keylistener - Fatal编程技术网

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,那么你应该接受答案,让其他人知道问题已经解决了。