Есть ли слушатель, который слушает событие enable / disable в Swing?
Есть ли слушатель, который я могу добавить в Swing combobox, который будет срабатывать, когда combobox включен или отключен?
Я пробовал разных слушателей, таких как componentlistener, itemlistener, propertychangelistener, но тщетно. Я использую JDK 1.6.
1 ответ:
PropertyChangeListener
кажется, это прекрасно работает для меня...import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class EnabledTest { public static void main(String[] args) { new EnabledTest(); } public EnabledTest() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new TestPane()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public class TestPane extends JPanel { public TestPane() { setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridwidth = GridBagConstraints.REMAINDER; final JComboBox cb = new JComboBox(new Object[]{"One", "Two", "Three"}); add(cb, gbc); cb.addPropertyChangeListener("enabled", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { System.out.println("State changed for " + evt.getPropertyName() + " to " + evt.getNewValue()); } }); JButton btn = new JButton("Switch"); add(btn, gbc); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cb.setEnabled(!cb.isEnabled()); } }); } } }