[英]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.