2014-03-12 83 views
1

在我的應用程序我有2種類型的JComboBox:可編輯和不可編輯。
可編輯這裏怎麼會出現在Windows 7與Java 7:Java JComboBox外觀

enter image description here

和這裏的不可編輯:

enter image description here

是否有可能設置白色背景中不可編輯JComboBox

+1

如果您發佈我們可以使用的[MCVE](http://stackoverflow.com/help/mcve),您將會有更好的運氣。你有沒有嘗試過使用自定義渲染器? –

+1

所有評論都是關於「禁用」,但我寫了「不可編輯」,這意味着用戶不能用鍵盤寫在「組合框」內,但可以點擊並查看項目... – Fry

回答

0

只需在不可編輯組合上設置背景。 注意:默認情況下編輯組合的編輯器是JTextField,所以這就是使用UIManager值的原因。

在Windows XP上使用Java 7:

import java.awt.*; 
import javax.swing.*; 
import javax.swing.plaf.*; 

public class ComboBoxDemo implements Runnable 
{ 
    public static void main(String[] args) throws Exception 
    { 
    SwingUtilities.invokeLater(new ComboBoxDemo()); 
    } 

    @SuppressWarnings("unchecked") 
    public void run() 
    { 
    String[] items = new String[]{"", "Apple", "Banana", "Carrot"}; 

    Color bgColor = UIManager.getColor("TextField.background"); 

    UIManager.put("ComboBox.selectionBackground", 
        new ColorUIResource(bgColor)); 

    JComboBox combo1 = new JComboBox(items); 
    combo1.setPrototypeDisplayValue("XXXXXXXXXXXXXXX"); 
    combo1.setEditable(true); 
    combo1.setSelectedIndex(-1); 

    JComboBox combo2 = new JComboBox(items); 
    combo2.setPrototypeDisplayValue("XXXXXXXXXXXXXXX"); 
    combo2.setEditable(false); 
    combo2.setSelectedIndex(-1); 
    combo2.setBackground(bgColor); 

    JFrame frame = new JFrame(); 
    Container c = frame.getContentPane(); 
    c.setLayout(new FlowLayout()); 
    c.add(combo1); 
    c.add(combo2); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(200, 100); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    } 
} 

編輯:添加的代碼刪除與大小的差異和重點色。

+0

您的代碼不起作用... – Fry

+0

它適合我。你需要更好地解釋你的問題。你看到你不想要什麼?或者,你有什麼看不到你想要的? – splungebob

+0

我希望組合框不可編輯(Relazione 1)看起來像可編輯組合框(lista cod)。 – Fry