0

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

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

在此处输入图像描述

我希望组合编辑器在输入键盘字母或 Backspace 或 Delete 时像 JTextField 一样工作,那么有没有办法做到这一点?或者是什么原因造成的?

4

2 回答 2

6

请参阅下文了解SSCCE的重要性,并非所有出错的事情都是错误,大多数时候它在您的实际代码中出现问题,如果没有SSCCE,我们就不会更聪明。

对我来说似乎工作正常:

启动时:

在此处输入图像描述

选择JComboBox并按下后Backspace

在此处输入图像描述

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();
    }
}

更新

根据您的评论:

我不认为它会正常工作!... 这是 Substance 中的一个问题;我正在使用的 L&F。

有关该错误的详细信息,请参见下文:

物质:可编辑的 JComboBox 不支持退格键

就像声明的那样:

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

或者,请在此处查看我的答案以获取更多 L&F 和/或制作自己的方法

更新 2

感谢@Brad(用于破译我从 Substance 链接的错误日志:P)来解决这个问题,只需执行以下操作:

UIManager.put( LafWidget.COMBO_BOX_NO_AUTOCOMPLETION, Boolean.TRUE ); 
于 2013-06-30T14:32:58.330 回答
0
UIManager.put(LafWidget.COMBO_BOX_NO_AUTOCOMPLETION, Boolean.TRUE);

这对我有用!

于 2014-03-16T17:14:02.603 回答