1

请记住,用于 Swing 按钮的 MouseListeners 是一个很大的问题,我的 JToggleButton 如何监听翻转/mouseOver 事件?下面的代码不会打印出“翻转”。

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Test {

  public static void main(String[] args) {

  JPanel panel = new JPanel();
  final JToggleButton button = new JToggleButton();
  button.addChangeListener(new ChangeListener() {
    @Override
    public void stateChanged(ChangeEvent arg0) {
        ButtonModel mod = button.getModel();
        if (mod.isRollover()) {
            System.out.println("rollover"); //won't work, unless button is of type JButton
        }
    }
  });
  JFrame frame = new JFrame();
  frame.add(panel);
  panel.add(button);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
  }
}
4

2 回答 2

3

你的代码是正确的。但是,请记住,默认情况下不启用翻转。所以,你必须先这样做:

button.setRolloverEnabled(true);
于 2014-04-12T18:24:23.887 回答
3
public void setRolloverEnabled(boolean b)
Sets the rolloverEnabled property, which must be true for rollover effects to occur. The default value for the rolloverEnabled property is false. Some look and feels might not implement rollover effects; they will ignore this property.

你应该打电话button.setRolloverEnabled(true);

于 2014-04-12T18:25:37.910 回答