Java - 允许在带有物质L& F的可编辑JComboBox中使用退格

时间:2013-06-30 14:27:47

标签: java swing jcombobox backspace substance

我正在使用Substance L& F并且我已将JComboBox设置为可编辑,以便我可以从其弹出窗口中选择我想要的值,或者在其编辑器中键入新值。

键入一个新值可以正常工作,但如果我想从Combo编辑器中删除一个未命名的字母,我单击Backspace来执行此操作,它会选择编辑器中的字母而不是删除它们。这是一个截图:

enter image description here

我希望Combo编辑器在输入键盘字母或退格键或删除键时像JTextField一样工作,那么有没有办法做到这一点?或者是什么导致了这个?

2 个答案:

答案 0 :(得分: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();
    }
}

<强>更新

根据你的评论:

  

我觉得它不会好起作用! ......这是物质中的一个问题;   L&amp; F我正在使用。

有关Bug的详细信息,请参阅下文:

Substance: Editable JComboBox does not support backspace key

如上所述:

  

此行为是设计使然。这是物质的“感觉”部分   在可编辑的组合框上添加自动完成功能。

另请参阅我的回答here了解更多L&amp; Fs和/或制作自己的方法

更新2

感谢@Brad(用于破译我从Substance:P链接的错误日志)来解决这个问题:

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

答案 1 :(得分:0)

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

这项工作适合我!