[英]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。
有关错误的详细信息,请参见下文:
就像声明的那样:
此行为是设计使然。 这是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.