2013-10-14 6 views
1

그래서 나는 두 개의 버튼이 어떻게

JButton playB = new JButton(new ImageIcon("res/playA.png")); 
playB.setBorder(BorderFactory.createEmptyBorder()); 
playB.setContentAreaFilled(false); 
JButton playA = new JButton(new ImageIcon("res/playA.png")); 
playA.setBorder(BorderFactory.createEmptyBorder()); 
playA.setContentAreaFilled(false); 

가 어떻게 그것을 만들 것 한 스윙 롤오버 버튼을 만드는 방법? 내가 생각하는 모든 것은 마우스 수신기를 사용하는 것이지만 더 좋은 방법이 있을지 궁금합니다.

+0

스위치의 목적은 무엇입니까? JButton은 매우 모달이며 문맥에 따라 무엇이든 할 수 있습니다. –

답변

2

버튼 A에 마우스를 올려 놓으면 버튼 B로 전환됩니까? 내가 생각할 수있는 것은 마우스 청취자를 사용하는 것입니다. 그러나 더 좋은 방법이 있을지 궁금합니다.

참고 : setRolloverIcon 메서드를 사용할 수 없습니다. 모든 마우스 및 키 이벤트가 JButton의 API를 구현하고 올바르게

  • 사용 JButton.setRolloverIcon로되어 있기 때문에, s는 ..., 나 MouseListener를 사용하지 않는 2 개의 JButton로 전환

    • 이 아이디어, ButtonModel에서 이벤트가 출력 런타임에 첨가 두 Swing Action들 대신 두 JButton들 수 있고, S로한다 ActionListener

    0

    예 :

    JButton.getModel().addChangeListener(new ChangeListener() { 
        @Override 
        public void stateChanged(ChangeEvent e) { 
         ButtonModel model = (ButtonModel) e.getSource(); 
         if (model.isRollover()) { 
          //doSomething 
         } else if (model.isPressed()) { 
          //doSomething 
         } // etc 
        } 
    }); 
    

    편집

    다시

    가 어떻게 그것을 만들 것입니다 버튼 B에 내가 버튼 A를 통해 내 마우스를 움직이 스위치 그래서? 내가 생각할 수있는 것은 마우스 청취자를 사용하는 것입니다. 그러나 더 좋은 방법이 있을지 궁금합니다. JButton (button A)

    • 결론 먼저이, 그 이벤트가 모두 roll_over에 그 (immediatelly) 마녀 때문에 결코 Mouse 또는 KeyEvent s의 사용자 측에 accesible 수 없습니다하지

    • 다음이다 한 가지 방법 일 뿐이며 프로그래밍 방식으로 JButton.doClick()KeyBinding에서 호출하지만, 이유와 방법 및 이유는 무엇인가 ... 간단한 것을 복잡하게 만드는 질문이 여전히 있습니다.

    +0

    감사합니다 백만이 매력처럼 작동합니다. – Troubleshoot

    +0

    당신은 환영합니다. – mKorbel