改变JComboBox箭头按钮的图标

3
感谢您的回复, 但我想做的是: 在可编辑的组合框中按下按键时,我希望自动弹出 jcombobox 的弹出菜单,并获取其中输入的文本。但是当我更改箭头按钮的图标时,图标确实变了,但按键时弹出菜单没有出现。
当我试图在 Windows 外观下执行此操作时,它完全正常,没有任何问题,但在 Synth 外观下,则无法正常工作。 我已经搜索了两天,但仍无法解决问题。
我尝试使用文档侦听器,但什么也没有改变或我没有正确使用它。
我希望这次我的问题有所澄清。
JTextField editor;
.
.
.
editor = (JTextField) jComboBox1.getEditor().getEditorComponent();

\\ 

editor.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {

    if (jComboBox1.isDisplayable())
    {
        jComboBox1.setPopupVisible(true);
    }

         System.out.println(editor.getText());
}
});

\\ change arrowbutton icon

jComboBox1.setUI(new SynthComboBoxUI() {

   @Override
   protected JButton createArrowButton() {
      JButton btn = new JButton();
      btn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Image/error3.png")));
      return btn;
   }
});

1
你的Java代码是否全部左对齐了?这样很难阅读。 - Hovercraft Full Of Eels
1个回答

4
  1. 不要使用KeyListener,而应该使用DocumentFilter来过滤不需要的字符或DocumentListener

  2. JTextComponents返回Document(从JComboBox/JSpinner派生的JTextFieldJFormattedTextField

  3. Icon放入保存在xml文件中的定义中,对于Synth,您可以通过从JComboBox派生SynthButtonUI来测试它

  4. 从Synth L&F切换到使用Nimbus

  5. 使用自定义外观和感觉,其中一些部分直接覆盖了BasicXxxUI中的方法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接