当鼠标光标hover在JButton上时,更改布尔值

当你将鼠标hover在我的按钮上时,它会从黑色变为灰色,我使用setRolloverIcon(ImageIcon);执行此操作setRolloverIcon(ImageIcon); 。 当鼠标光标hover在JButton上时,是否有任何简单的方法可以使布尔值等于true,或者我是否必须使用MouseMotionListener来检查鼠标光标的位置?

当鼠标光标hover在JButton上时,是否有任何简单的方法可以使布尔值等于true

你可以将ChangeListener添加到ButtonModel ,例如

 JButton.getModel().addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { ButtonModel model = (ButtonModel) e.getSource(); if (model.isRollover()) { //do something with Boolean variable } else { } } }); 

这是使用ButtonModel的示例:

 import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class TestButtons { protected void createAndShowGUI() { JFrame frame = new JFrame("Test button"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JButton button = new JButton("Hello"); button.getModel().addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { if (button.getModel().isRollover()) { button.setText("World"); } else { button.setText("Hello"); } } }); frame.add(button); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new TestButtons().createAndShowGUI(); } }); } } 

尝试这个:

 button.addMouseListener(new MouseListener() { public void mouseEntered(MouseEvent e) { yourBoolean = true; } } 

祝好运