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