繁体   English   中英

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

[英]Java - Allow using backspace in an editable JComboBox with Substance L&F

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

键入一个新值可以很好地工作,但是如果我想从Combo编辑器中删除未键入的字母,然后单击Backspace即可,它会在编辑器中选择字母而不是擦除它们。 这是屏幕截图:

在此处输入图片说明

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

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

更新

根据您的评论:

我认为这不会很好! ...这是物质上的问题; 我正在使用的L&F。

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

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

就像声明的那样:

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

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

更新2

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

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

这项工作对我来说!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM