我的项目中有许多.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();

08-26 22:43