请记住,Swing按钮的MouseListeners是一个很大的nono,我的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);
}
}发布于 2014-04-12 18:24:23
你的代码是正确的。但是,请记住,默认情况下不启用滚转。所以,你必须先这样做:
button.setRolloverEnabled(true);发布于 2014-04-12 18:25:37
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);
https://stackoverflow.com/questions/23034202
复制相似问题