2011-12-22 59 views
0

我遵守以下行为(在Windows 7平台上):摇摆的JComboBox怪异的行为

import java.awt.*; 
import javax.swing.*; 
public class Main extends JFrame{ 
    JPanel p; 
    JComboBox<String> l; 
    JLabel title; 
    public static void main(String[] arg){ 
     Main m = new Main(); 
     m.setVisible(true); 
     m.setSize(400,400); 
     m.p = new JPanel(); 
     //m.l = new JComboBox<String>(); 
     m.title = new JLabel("HELLO"); 
     m.p.add(m.title); 
     m.setContentPane(m.p); 
     } 
} 

显示HELLO,但如果我取消对实例化JComboBox行,它不会显示任何内容。什么可能导致?你能重现错误吗?从我的评论

+2

移动'm.setVisible(真);'在末端。 – 2011-12-22 10:35:25

+0

对不起,我刚刚找到答案,我应该在JFrame上运行包,我已经忘记了;( – lc2817 2011-12-22 10:36:42

+0

@HarryJoy它的工作,谢谢 – lc2817 2011-12-22 11:05:28

回答

2

解决方案:

移动m.setVisible(true);末。

延Schauder不另一评论:

你的代码也应在美国东部时间运行。还有什么是要求 麻烦

可能是他想告诉像这样:

一切处理Swing组件,包括有建筑must run in the EDT。如果它没有被破坏,虽然你可能没有注意到它。

对于您可以从主要方法如下移动你的逻辑类的构造函数和调用构造:

public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new Main(); 
      } 
     }); 
    } 

您也可以编写逻辑一些其他的方法,然后构造函数。