2015-11-03 24 views
1

我想從主方法中更改jLabel中的文本,其原因是因爲我需要滿足一些條件才能使更改發生並且它不是基於觸發器的。從netbeans中的主要方法操縱jLabel

代碼:

public class TheMain extends javax.swing.JFrame { 


    public TheMain() { 
     initComponents(); 
    } 

public void changeLabel1(){ 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       jLabel1.setText("looo"); 
      } 
     }); 
    } 

    public void changeLabel2(){ 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       jLabel2.setText("looo"); 
      } 
     }); 

    } 

    public static void main(String args[]) { 
     TheMain some = new TheMain(); 
     if(condition){ 
      some.changeLabel1(); 
     }else{ 
      some.changeLabel2(); 
     } 
    } 

} 

我試圖打印內部changelabel1changelabel2一些東西只是爲了檢查,如果他們成功地調用,它沒有打印,但我猜這是不可能實現的用戶界面的變化在他們裏面,還是我誤會了?

回答

2
 if(condition){ 
     some.changeLabel1(); 
    }else{ 
     some.changeLabel2(); 
    } 

上面的logice需要在TheMain類中定義,因爲那是標籤變量將被定義的地方。

main()方法僅用於創建GUI。 main()方法中應該沒有應用程序邏輯。

+0

我以爲它是在應用程序邏輯應該放在main()函數中,就像之前我用main打印hello world – makingitwork

+2

你不是在談論一個簡單的「hello world」示例,它展示瞭如何編譯/執行一類。您正在詢問如何創建GUI。查看Swing教程中關於[如何使用標籤](http://docs.oracle.com/javase/tutorial/uiswing/components/label.html)的部分,瞭解可以下載執行的演示代碼。它會告訴你如何更好地構建你的代碼。 – camickr

+0

@makingitwork jLabel1和jLabel2是如何創建的?這類問題的一個常見原因是將它們聲明爲實例變量,然後在創建它們時用局部變量隱藏它們:'JLabel label1 = new JLabel():'而不是'label1 = new JLable();' – FredK