2016-03-04 76 views
0

我在使用Swing的Netbeans中创建了一个GUI,并且无法理解在GUI中设置文本区域值的最佳方法。Netbeans Swing GUI

这个GUI在NetBeans类被称为JFrameTest并没有对这个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的图形用户界面是:

JFrameTest newwindow = new JFrameTest(); 
    newwindow.setVisible(true); 

这一点我理解,但我不能引用我的文字区域newwindow.JTextFiles因为NetBeans的设置全部初始化组件:

private void iniComponents() 

为私人!

我不明白为什么Netbeans设计师制作图形用户界面,以便您不能从课堂外设置文本字段等的值。

什么是最好的前进方向?将GUI放入GetFiles类或....?

感谢

-AL

像这样:

public String assigntext(String directorystring) { 
    JTextFiles.setText(directorystring); 
} 

回答

1

我不明白为什么Netbeans的设计师,使图形用户界面,让你不能从设置的文本字段等的值课外。

出于同样的原因,当你创建自己的类应该给他们不能直接访问,从外部类胡乱操作私有字段。它被称为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类型方法,您将更改实例的状态,但通常是d on't期待任何回报,你会做这个空白:

// note the difference? 
public void assigntext(String directorystring) { 
    JTextFiles.setText(directorystring); 
} 
+0

因此该方法的语法,以文本字段的值设置为: –

+0

@AlGrant:我不清楚在刚刚你上面问,而且我不确定什么“上课”是 - 你的意思是“同一个”班吗?这完全取决于,有时代码需要在同一个类中,有时在不同的类中,这取决于代码和问题的具体情况(我们目前所知甚少)。但永远记住一个关于类的关键规则,[单一责任原则](https://en.wikipedia.org/wiki/Single_responsibility_principle):每个类都应该对单一功能负责。 –

+0

因此,设置文本字段值的方法的语法是: [code] public String setFooTextFieldText(String text){ setText(FooTextFieldText); } [/ code] 干杯 –