[英]How do I Update JTextField text from another panel object
我有4个面板在一个框架上运行..每个面板在哪里都有自己的类。 每个面板类都有自己的小部件和布局。 我正在尝试从panel1的textField输入更新panel2的textField。
我试过调用panel2.textfield.setText(“需要什么文本”); 在panel1的textfield actionEvent上,当我检查system.out.println()方法时,值的确发生了变化,但除非两个文本字段都在一个构造函数下定义,否则荡荡的UI不会改变,这是我不希望的
这只是一个概念,让您了解我想做什么。
class1 extends JPanel{
JTextField textfield1;
class1(){
textfield1 = JTextField();
add(textfield1);
textfield1.addActionListener((ActionEvent evt)->{
change(evt);
system.out.println(textfield1.getText())
});
}
void change(ActionEvent evt){
new Class2.textfield2.setText("y");
}
}
class2 extends JPanel{
JTextfield textfield2;
class2(){
texfield2 = new JTextField("x");
add(textfield2);
}
}
Mainclass extends JFrame{
Mainclass(){
setOnDef....(JFrame.exit_onclose);
Class1 class1 = new Class1();
Class2 class2 = new Class2();
add(class1);
add(class2);
pack();
}
public void main(String[]args){
SwingUtilities.invokelater(()->{
new Mainclass.setVisible(true);
});
}
}
我希望X可以更改为Y。
您的问题在于此行:
new Class2.textfield2.setText("y");
通过调用new Class2()
创建的新实例Class2
,后来改变东西在里面。 框架中Class2
的实例保持不变。 为了解决这个问题,您必须获得对框架中对象的引用,例如通过将其传递给构造函数,如下所示:
在Class1
Class2 class2;
Class1(Class2 class2) {
this.class2 = class2;
// Other constructor stuff
}
void change(...) {
class2.textfield2.setText("y);
}
在Mainclass
的构造函数中
Class2 class2 = new Class2();
Class1 class1 = new Class1(class2);
这种方式的change
实际上会更改显示的TextField
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.