2012-03-18 102 views
1

我對Java和Swing很新穎,而且我使用Windowbuilder來玩弄幾個GUI創意,但是當嘗試使用WindowBuilder時,我遇到了一個問題設置Jlabel的文本。從這個初始化中Java Swing - 使用另一種方法設置Jlabel文本

private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 570, 393); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JLabel pathLabel = new JLabel("New label"); 
    pathLabel.setBounds(61, 296, 414, 15); 
    frame.getContentPane().add(pathLabel);} 

如果我使用pathLabel.setText( 「在此處輸入文本」):

的WindowBuilder已經自動創建一個JLabel的實例,稱爲pathLabel,在initialize()方法,像這樣()方法,那麼它工作正常,但我怎樣才能從一個完全不同的方法設置文本?這不是讓我參考它。

我從來沒有在Visual Studio中用C#發現過這個問題,並且能夠從我選擇的任何方法中設置標籤的文本。我錯過了什麼?

我希望這是有道理的,我很欣賞任何幫助。謝謝。

+3

另一個不使用代碼生成器來構建Swing代碼的原因。考慮通過Swing教程來學習如何手工編寫代碼。 – 2012-03-18 19:20:32

+0

'setBounds(..)'不!瞭解如何使用佈局(使用填充)和邊框! – 2012-03-18 19:23:56

+2

*「我從來沒有在Visual Studio中使用C#編寫過這個問題」*寫這樣的東西不是鼓勵人們回答的好方法。不同的語言有不同的優勢弱點和用途。 Java是一種x平臺語言,需要佈局來可靠地確定組件的大小和對齊。使用佈局不像將組件拖放到已知/固定位置那樣簡單。 – 2012-03-18 19:30:02

回答

2

你可以把pathLabel在你的類實例變量,並在所有的方法訪問它班上。

class GUIClass extends JFrame{ 
JLabel pathLabel; 
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 570, 393); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    pathLabel = new JLabel("New label"); 
    pathLabel.setBounds(61, 296, 414, 15); 
    frame.getContentPane().add(pathLabel); 
} 
void func(){ 
    pathLabel.setText("enter text here"); 
} 
+0

非常好!我現在明白了,非常感謝。 – Bagshot 2012-03-18 19:54:27

2

您可以在周圍的類中創建一個字段pathLabel使所有類方法可以訪問它:

class YourClass { 
    private JLabel pathLabel; 
    private void initialize() { 
     ... 
     // Note that there is no declaration for pathLabel inside initialize 
     // since it was already declared above, and the above 
     // declaration is a reference shared by all class methods 
     pathLabel = new JLabel("New label"); 
     ...} 
}