質問

Keeping in mind that MouseListeners for Swing buttons is a big nono, how can my JToggleButton listen for rollover/mouseOver events? The code below does not print out "rollover".

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);
  }
}
役に立ちましたか?

解決

Your code is correct. But, keep in mind that rollover is not enabled by default. So, you have to do this first:

button.setRolloverEnabled(true);

他のヒント

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.

You should call button.setRolloverEnabled(true);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top