Netbeans Swing GUI

时间:2016-03-04 18:33:55

标签: java swing netbeans

我使用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);
}

1 个答案:

答案 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);
}