2015-06-20 65 views
-2

我尝试用下面的代码:JComboBox不显示数据?

public class JComboBoxDemo extends JFrame{ 
    private JPanel panelParents; 
    private JLabel lblTitle; 
    private JComboBox cboLanguage; 

public JComboBoxDemo() { 
    super("JComboBox Demo"); 
    setContentPane(panelParents); 

    String language[] = {"English","Khmer","Korea","Chinese","Thai","Russia"}; 

    cboLanguage = new JComboBox(language); 
    cboLanguage.setSelectedIndex(1); 
    cboLanguage.setMaximumRowCount(5); 

    pack(); 
    setBounds(100,100,450,256); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLocationRelativeTo(null); 
} 
} 

但它并不显示任何JComboBox,这有什么错我的代码?

+0

你不加入组合到GUI。请阅读他的内容。 –

+0

我已经通过IntelliJ添加了组合框以形成设计,并且它工作正常,但它不显示JComboBox上的数据。 –

回答

1

问题是你正在通过nullsetContentPane。以下代码正在工作

import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class JComboBoxDemo1 extends JFrame { 
    private JPanel panelParents; 
    private JLabel lblTitle; 
    private JComboBox cboLanguage; 

    public JComboBoxDemo1() { 
     super("JComboBox Demo"); 

     String language[] = {"English", "Khmer", "Korea", "Chinese", "Thai", 
       "Russia"}; 

     cboLanguage = new JComboBox(language); 
     cboLanguage.setSelectedIndex(1); 
     cboLanguage.setMaximumRowCount(5); 
     getContentPane().add(cboLanguage); 

     pack(); 
     setBounds(100, 100, 450, 256); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new JComboBoxDemo1(); 
    } 
} 
1

下面是第二种方法。理想情况下,如果你不扩展它的功能,你不应该重写一个类。 比继承更喜欢构图,细节here。柜面JFrame细节可以在下面here

代码中找到:

import java.awt.Component; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class JComboBoxDemo { 
    private JPanel panelParents; 
    private JLabel lblTitle; 

    public JComboBoxDemo() { 
     JFrame frame = new JFrame("JComboBox Demo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().add(getMainComponent()); 
     frame.pack(); 
     frame.setBounds(100, 100, 450, 256); 
     frame.setVisible(true); 
     frame.setLocationRelativeTo(null); 
    } 

    private Component getMainComponent() { 
     JComboBox cboLanguage = new JComboBox(); 
     String language[] = {"English", "Khmer", "Korea", "Chinese", "Thai", 
       "Russia"}; 
     cboLanguage = new JComboBox(language); 
     cboLanguage.setSelectedIndex(1); 
     cboLanguage.setMaximumRowCount(5); 
     return cboLanguage; 
    } 

    public static void main(String[] args) { 
     new JComboBoxDemo(); 
    } 
}