2016-03-04 75 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] 乾杯 –