Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 通过JButton更改JTextField_Java_Swing_Jbutton_Jtextfield - Fatal编程技术网

Java 通过JButton更改JTextField

Java 通过JButton更改JTextField,java,swing,jbutton,jtextfield,Java,Swing,Jbutton,Jtextfield,我在这里要做的就是让这个按钮在按下时显示GUI文本字段中的数字1。由于某种原因,当我按下它时,它不会改变任何东西。但我没有收到任何错误代码 optionOne = new JButton("Option One"); selectionPanel.add(optionOne); optionOne.setPreferredSize(new Dimension(125, 25)); optionOne.addActionListener(new ActionListener() { pu

我在这里要做的就是让这个按钮在按下时显示GUI文本字段中的数字1。由于某种原因,当我按下它时,它不会改变任何东西。但我没有收到任何错误代码

optionOne = new JButton("Option One");
selectionPanel.add(optionOne);
optionOne.setPreferredSize(new Dimension(125, 25));
optionOne.addActionListener(new ActionListener() 
{
    public void actionPerformed(ActionEvent e) 
    {
        optionTF.setText(firstOption);
    }
});
你试过这个吗:

public void actionPerformed(ActionEvent e) 
{
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            optionTF.setText(firstOption);
        }
    });
}

我可以尝试另一种方法来实现ActionListener。不要通过addActionListener(新操作侦听器{})创建匿名类;但是创建一个内部类,例如:

optionOne.addActionListener(new OneListener());
然后在同一类中添加:

private class OneListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        optionTF.setText(firstOption);
    }
}

然后检查这是否有效。

什么是
optionTF
?还有什么id
firstOption
?@Blip,它是一个JTextField对象。。。to OP:您确定您的第一个选项字符串不是空的吗?尝试在调试器中运行以查看发生了什么。我不擅长swing,但我记得如果您使用JPanel放置对象,那么您需要对其调用updateUI()方法进行更新以进行更改。您确定
optionTF
在层次结构中吗?可能与
firstOption
的值有关。将System.out.println()放入其中,并验证此处实际包含的值是多少(显然第二个和第三个字符串尚未使用)私有字符串firstOption=“1”,secondOption=“2”,thirdOption=“3”;仍然没有运气,我一直在尝试改变我的面板的背景颜色,但现在它们没有改变。好像整个底部面板都冻结了,并且拒绝更新眼睛,看起来这里根本不需要invokeLater
actionPerformed
已经在EDT上执行了。你真的不应该随便尝试