2015-11-26 86 views
0

我无法编辑Java中的JComboBox。尽管我已将该属性设置为true,但仍然没有用。当我设置该属性为可编辑的我无法使用,甚至或在其下拉列表中选择值JComboBox无法编辑或输入文本

JComboBox comboBoxEmployeeID = new JComboBox(); 
comboBoxEmployeeID.setModel(new DefaultComboBoxModel(new String[] {"45", "67", "78", "97"})); 
comboBoxEmployeeID.setEditable(true); 
comboBoxEmployeeID.setEnabled(true); 
comboBoxEmployeeID.setBounds(140, 13, 163, 20); 
add(comboBoxEmployeeID) 

一件事是,当我刚刚查看设计在Eclipse的快速/测试和预览我我得到一个可编辑和完美的做工精细的JComboBox但只要我调试问题出现

Here is the Quickly/Test and Preview Screenshot

+0

不要使用null布局和setBounds(...) 。 Swing旨在与[布局管理器]配合使用(http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)。 – camickr

回答

0

你的问题可能是你的代码的其他部分造成的。你能添加整个框架(或应用程序)的代码吗?如果我在你的问题(用Java 8 [1.8.0_65]和IntelliJ 15)测试代码,它在我的机器上工作正常:

import javax.swing.*; 

public class ComboBoxNoChange { 
    public static void main(final String[] arguments) { 
     SwingUtilities.invokeLater(() -> new ComboBoxNoChange().createAndShowGui()); 
    } 

    private void createAndShowGui() { 
     final JFrame frame = new JFrame("Stack Overflow"); 
     frame.setBounds(100, 100, 800, 600); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

     final JPanel panel = new JPanel(); 
     panel.add(createComboBox(new String[]{"45", "67", "78", "97"})); 
     frame.getContentPane().add(panel); 

     frame.setVisible(true); 
    } 

    private JComboBox<String> createComboBox(String[] employeeIDs) { 
     JComboBox<String> employeeIdComboBox = new JComboBox<>(); 
     employeeIdComboBox.setModel(new DefaultComboBoxModel<>(employeeIDs)); 
     employeeIdComboBox.setEditable(true); 
     employeeIdComboBox.setEnabled(true); 
     employeeIdComboBox.setBounds(140, 13, 163, 20); 

     return employeeIdComboBox; 
    } 
} 
+0

面板切换是否会导致问题 – DevX

+0

您是指在一个框架或JTabbedPane中的面板之间切换?或者在应用程序中的多个帧之间切换?我不知道它是如何影响组合框的。一旦它可见并启用,我希望它能起作用。如果您可以在屏幕截图中添加“Wrapper JFrame”的代码,我们可能会重现该问题。 –

+0

登录面板有一个完全正常的工作组合框,但我认为其对面板相关莫名其妙这里切换是什么对于 'ChangingPanel.removeAll()来实现;' 'ChangingPanel.add(UpdateUser两个);' 'UpdateUser两个。 setVisible(true);' 'repaint();' – DevX