2014-04-12 3 views
1

Swing 버튼 용 MouseListeners는 큰 논점이 아닙니다. JToggleButton이 어떻게 롤오버/mouseOver 이벤트를 수신 할 수 있습니까? 아래의 코드는 "롤오버"를 출력하지 않습니다.ChangeListener의 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); 
    } 
} 

답변

2

코드가 정확합니다. 그러나 롤오버는 기본적으로 활성화되어 있지 않습니다. 그래서 먼저이 작업을 수행해야한다 :

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);