2013-06-30 18 views
0

我正在使用物質L & F和我已將JComboBox設置爲可編輯狀態,以便我可以從其彈出窗口中選擇所需的值,或者在其編輯。Java - 允許在包含物質L&F的可編輯JComboBox中使用退格鍵

鍵入一個新的值可以正常工作,但是如果我想從Combo編輯器中刪除一個未命中的字母,並且我單擊Backspace來執行該操作,它將在編輯器中選擇這些字母而不是將其刪除。下面是截圖:

enter image description here

希望將組合編輯器中鍵入字母鍵盤或Backspace鍵時就像一個JTextField工作或在它刪除,那麼,有沒有辦法做到這一點?或者是什麼造成這種情況?

+2

請儘快發佈[SSCCE](http://sscce.org)以獲得更好的幫助。 –

回答

6

請參閱下面的SSCCE的重要性並非所有出錯都是一個錯誤,大多數時候它在您的實際代碼中出現錯誤,如果沒有SSCCE我們並不聰明。

似乎爲我工作的罰款:

在啓動時:

enter image description here

選擇JComboBox並按Backspace鍵後

enter image description here

import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class Test { 

    public Test() { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 


       JComboBox jc = new JComboBox(new String[]{"Hello", "Bye", "World", "Cruel"}); 
       jc.setEditable(true); 
       frame.add(jc); 

       frame.pack(); 
       frame.setVisible(true); 

      } 
     }); 
    } 

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

UPDATE

按您的評論:

我沒想到它會工作得很好! ...這是物質的問題; 我使用的是L &。

請參閱以下的錯誤信息:

Substance: Editable JComboBox does not support backspace key

如前所述:

此行爲是由設計。這是Substance的「感覺」部分, 在可編輯的組合框上添加了自動完成功能。

或者看我的回答對here多個L & F和/或一個方法,使自己的

更新2

感謝@Brad(破譯我鏈接錯誤日誌從物質:P)來解決這個問題簡單地做:

UIManager.put(LafWidget.COMBO_BOX_NO_AUTOCOMPLETION, Boolean.TRUE); 
+0

@mKorbel +1我也這麼認爲,它看起來像OP可能會嘗試自動完成,但沒有SSCCE,我們坐無知:(。 –

+0

:-) ................同意 – mKorbel

+0

@大衛..我不認爲它會正常工作! ...這是物質的問題;我正在使用的L&F。 – Brad

0
UIManager.put(LafWidget.COMBO_BOX_NO_AUTOCOMPLETION, Boolean.TRUE); 

這個工作適合我!