Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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 如何修改来自不同类的JTextfield的文本?(爪哇)_Java_Swing_Jtextfield - Fatal编程技术网

Java 如何修改来自不同类的JTextfield的文本?(爪哇)

Java 如何修改来自不同类的JTextfield的文本?(爪哇),java,swing,jtextfield,Java,Swing,Jtextfield,我正在尝试做一个计算器作为练习(我在Java方面很差),但现在我面临一个无法解决的问题。我有一个带卡片布局的框架,其中一张卡片上有一个JTextfield。我在我的主课中创建了文本字段: JTextField textfield=新的JTextField(),并用它做了一些事情: textfield.setBounds(50,130,380,60); textfield.setEditable(false); textfield.setFont(字体); 现在,我想从另一个类修改textfie

我正在尝试做一个计算器作为练习(我在Java方面很差),但现在我面临一个无法解决的问题。我有一个带卡片布局的框架,其中一张卡片上有一个JTextfield。我在我的主课中创建了文本字段:
JTextField textfield=新的JTextField(),并用它做了一些事情:

textfield.setBounds(50,130,380,60);
textfield.setEditable(false);
textfield.setFont(字体);
现在,我想从另一个类修改textfield上的文本(这使计算器工作):
main.textfield.setText(main.textfield.getText()+“ans”),但这不起作用。我试图用ActionPerformed方法修改文本。
有人知道我做错了什么吗

我试着通过我的主类中的一个方法来完成,重新绘制并重新验证框架和面板,但这两个都不起作用

@DanielJunglas要求提供更多信息,所以我们开始:p。我将列出所有可能对我的问题产生影响的代码

frame.setBounds(700250500700);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(空);
frame.setresizeable(false);
contPanel.setLayout(卡片)//将cardlayout设置为容器面板
连续面板立根(0,0,500,700);
createBegPanel()//创建面板
createNorPanel();
createTriPanel();
//createeqpanel();
contPanel.add(beginPanel,“p1”);
contPanel.add(normalCalcPanel,“p2”);
contPanel.添加(Tricalpanel,“p3”);
//contPanel.add(equalcpanel,“p4”);
卡片展示(续面板,“p1”);
添加框架(contPanel);
frame.setVisible(true);
public void createNorPanel(){//这些是我对textfield所做的事情
textfield.setBounds(5013038060);
textfield.setEditable(false);
textfield.setFont(字体);
public void actionPerformed(ActionEvent e){
JButton source=(JButton)e.getSource();
main.textfield.setText(“测试”);
因此,按下任何按钮,它都应该将文本字段的文本设置为“text”,但它没有。这足够信息吗


提前谢谢!

我想你从来没有打电话给
actionPerformed

如果您有一个按钮,则需要向其添加一个实现方法
actionPerformed(ActionEvent e)
ActionListener

看起来您有一个类实现了
ActionListener
(这通常不是一个好的解决方案)。在这种情况下,您必须将
this
作为
ActionListener
添加到按钮中

JButton b=newjbutton();
b、 addActionListener(此);
更好的解决方案是为每个按钮添加一个单独的
ActionListener

JButton b=newjbutton();
b、 addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
main.textfield.setText(“测试”);
}
});
ActionListener
是一个函数接口(它只有一个方法),这意味着您还可以使用Lambda表达式

b.addActionListener(e->main.textfield.setText(“测试”);

您能告诉我们您迄今为止是如何尝试的吗?除了显示代码的相关部分(甚至更好:一个最简单的工作示例),您还需要告诉我们哪些部分不起作用。代码是否未编译,更新是否未显示在屏幕上,是否引发了异常?通常,
setText()
设置文本是正确的做法。感谢您的反馈!我编辑了问题。@DanielJunglas它没有给出错误消息,文本只是没有显示在texfield上。在main类中创建textField getter方法,并在ActionListener类中执行getter方法。我在按钮上添加了ActionListener,然后deActionPerformed方法中的其他命令工作得非常好,然后
setText()
应该可以工作。我无法重现您的问题。您是否看到textfield?是的,我看到了。我终于找到了解决问题的方法。我将textfield设置为静态,现在我不再有任何问题。感谢您的帮助!