Изменить значок кнопки со стрелкой JComboBox

Спасибо за ответ

но это то, что я хочу сделать:

Когда в редактируемом комбинированном ящике нажимается клавиша, я хочу, чтобы всплывающее меню 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 ответ

  1. не используйте KeyListener, используйте DocumentFilter для фильтрации нежелательных символов или DocumentListener

  2. JTextComponents возвращает документ (производный JTextField или же JFormattedTextField от JComboBox / JSpinner)

  3. поместить значок в определения, сохраненные в xml file за SyntВы можете проверить это путем получения SynthButtonUI из JComboBOx

  4. от Synth L&F для использования Nimbus

  5. использовать Custom Look and Feel, часть из них переопределяет методы из BasicXxxUI непосредственно

Другие вопросы по тегам