3

谢谢您的回复

但这就是我想做的:

当在可编辑的组合框中按下一个键时,我希望 jcombobox 的弹出菜单自动出现,并获取其中写入的文本,但是当我更改箭头按钮的图标时,图标更改但弹出菜单没有' t 按下键时出现。

当我尝试在 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;
   }
});
4

1 回答 1

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

  2. JTextComponents返回 Document(派生JTextFieldJFormattedTextField来自JComboBox/ JSpinner

  3. Icon放入保存到xml filefor的定义中Synt,您可以通过从 JComboBOx 派生 SynthButtonUI 来测试它

  4. 从 Synth L&F 到使用Nimbus

  5. 使用Custom Look and Feel,其中一部分BasicXxxUI直接覆盖方法

于 2012-08-17T13:20:14.520 回答