2015-11-03 26 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