2016-06-11 3 views
0

다음과 같은 테스트 마우스를 사용하여 자바 마우스 어댑터 클래스의 메소드를 시도했지만 작동하지 않았습니다. 마우스 오버 버튼에 마우스를 올려 놓으면 진행 막대의 값을 2에서 늘리고 싶습니다. 이 문제를 어떻게 해결할 수 있습니까?JButton에 마우스 이동 이벤트를 쓰는 방법

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

class ProgressDemo extends JFrame{ 
    private JProgressBar progress; 
    private JButton mouseButton; 
    static int x = 2; 
    ProgressDemo(){ 
     progress = new JProgressBar(JProgressBar.HORIZONTAL,0,100); 
     progress.setBounds(50,100,500,15); 
     progress.setStringPainted(true); 
     mouseButton = new JButton("Mouse Over"); 
     mouseButton.addMouseListener(new MouseAdapter(){ 
      public void mouseMoved(MouseEvent evt){ 
       progress.setValue(x+=2); 
      } 
     }); 


     JPanel mousePanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); 
     mousePanel.setBounds(0,10,600,50); 
     mousePanel.add(mouseButton); 

     setSize(600,200); 
     setLayout(null); 
     add(mousePanel); 
     add(progress); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 
    } 
} 

class JProgress{ 
    public static void main(String args[]){ 
     ProgressDemo p1 = new ProgressDemo(); 
     p1.setVisible(true); 
    } 
} 
+0

Java GUI는 다른 로케일의 다른 PLAF를 사용하여 다른 OS ', 화면 크기, 화면 해상도 등에서 작동해야합니다. 따라서, 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). –

+0

'public void mouseMoved (MouseEvent evt) {''@Override public void mouseMoved (MouseEvent evt) {'가되어야합니다. 덧붙여 말하면, 수정해야하는 컴파일 오류가 발생합니다. –

+0

@Andrew 아직 문제가 해결되지 않습니다. OP는 마우스 오버 동작을 원하고'mouseMoved'는 그 동작을 오버라이드하는 올바른 방법이 아닙니다. 가능한 중복의 두 번째 대답에 쓰여지 듯이 마우스를 버튼 위로 이동 (enter)하고 경계 밖으로 빠져 나가는 것을 나타내는 (exit) 경우에는 'mouseEntered' 및'mouseExited'가됩니다. – OliPro007

답변

1

아래와 같이 코드를 수정하십시오. 희망이 당신이 진행하는 데 도움이됩니다.

mouseButton.addMouseMotionListener(new MouseMotionListener() { 

    @Override 
    public void mouseDragged(MouseEvent e) { 
    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 
     progress.setValue(x += 2); 
    } 
}); 
+0

효과가있었습니다! 고마워. .. –