【问题标题】:Listening for rollover on a JToggleButton in ChangeListener?在 ChangeListener 的 JToggleButton 上监听翻转?
【发布时间】:2014-04-12 18:09:47
【问题描述】:

请记住,用于 Swing 按钮的 MouseListeners 是一个很大的问题,我的 JToggleButton 如何侦听翻转/mouseOver 事件?下面的代码不会打印出“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);
  }
}

【问题讨论】:

    标签: java mouseover rollover jtogglebutton


    【解决方案1】:

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

    button.setRolloverEnabled(true);
    

    【讨论】:

      【解决方案2】:
      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);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 2011-09-15
        • 2012-12-20
        • 1970-01-01
        • 2013-05-05
        相关资源
        最近更新 更多