我使用Swing在Netbeans中创建了一个GUI,并且无法理解在GUI中设置文本区域值的最佳方法。
此GUI的netbeans类称为JFrameTest,并且有一个public static void main方法在此JFrameTestClass中显示GUI:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JFrameTest().setVisible(true);
}
});
}
现在,从另一个名为GetFiles的类中,我想显示此GUI,并将名为JTextFiles的文本区域设置为字符串值。
从GetFiles显示GUI的代码是:
JFrameTest newwindow = new JFrameTest();
newwindow.setVisible(true);
我理解这一点但是我无法引用我的文本区域newwindow.JTextFiles,因为netbeans设置了所有的init组件:
private void iniComponents()
是私人的!
我无法理解为什么Netbeans设计师制作GUI以便您无法在课堂外设置文本字段等的值。
前进的最佳方式是什么?将GUI放在GetFiles类中或....?
由于
-AL
像这样:
public String assigntext(String directorystring) {
JTextFiles.setText(directorystring);
}
答案 0 :(得分:2)
我无法理解为什么Netbeans设计师制作GUI以便您无法在课堂外设置文本字段等的值。
出于同样的原因,当您创建自己的类时,应该为它们提供私有字段,这些字段无法直接从外部类中无人值守地访问和操作。它被称为information hiding或封装,是面向对象编程原则的支柱,因为它有助于降低代码复杂性,从而减少错误。如果您需要更改字段的状态,请通过公共方法以受控方式执行 - 您可以使用NetBeans生成的GUI执行此操作。
如果您确实使用公共方法,请这样做,以便最少公开您的类的字段。因此,例如,如果您希望外部类从JTextField获取文本,fooTextField,请更喜欢这样:
public String getFooTextFieldText() {
return fooTextField.getText();
}
对此:
public JTextField getFooTextField {
return fooTextField;
}
关于你的问题:
public String assigntext(String directorystring) {
JTextFiles.setText(directorystring);
}
这类似于一个ssetter方法,并且因为使用setter类型方法,你正在改变实例的状态,但通常不会期望任何回报,你会使这个空虚:
// note the difference?
public void assigntext(String directorystring) {
JTextFiles.setText(directorystring);
}