我的项目中有许多.java文件。我想从FTall.java中访问FormTTS.java的{text field} t1(“ main” jFrame-> jPanel2)
我现在只是因为这个而出错,因为它找不到符号t1。
这是私人的,我无法将其更改为公共
编辑:
我已经在使用此代码从FormTTS.java打开FTall:
在FormTTS中的按钮中
FTall forma = new FTall();
JFrame frame = forma.getFrame();
forma.setVisible(true);
这在FTall
public JFrame getFrame() {
return jFrame1;
}
最佳答案
由于代码的结构方式,您需要为FormTTS.t1
提供某种方式
在FormTTS
中,提供一种公开t1
的方法,例如getMainTextField
之类的...
public JTextField getMainTextField() {
return t1;
}
您的下一个问题是
FTall
需要引用FormTTS
实例的引用。可能最简单的方法是将引用传递给FTall
的构造函数private FormTTS mainForm;
public FTall(FormTTS mainForm) {
this.mainForm= mainForm;
}
这将使您只需使用
t1
参考即可访问mainForm
...JTextField field = mainForm.getMainTextField();
就个人而言,我不希望公开文本字段,因为它给呼叫者提供了太多的访问权限,相反,我更喜欢
return
文本,并且如果需要,可以提供一种更改它的方法...所以在
FormTTS
中,我可能会做类似...public String getMainText() {
return t1.getText();
}
// Do this only if you need to have write access
public void setMainText(String text) {
t1.setText(text);
}
但这就是我...
要获取值,您将使用与上述类似的方法(获取文本字段)
String text = mainForm.getMainText();