1

Swing ボタンの MouseListeners は大きな問題であることに注意してください。JToggleButton がロールオーバー/マウスオーバー イベントをリッスンするにはどうすればよいでしょうか? 以下のコードは「ロールオーバー」を出力しません。

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 に答える