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);
}
}
Java GUI는 다른 로케일의 다른 PLAF를 사용하여 다른 OS ', 화면 크기, 화면 해상도 등에서 작동해야합니다. 따라서, 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). –
'public void mouseMoved (MouseEvent evt) {''@Override public void mouseMoved (MouseEvent evt) {'가되어야합니다. 덧붙여 말하면, 수정해야하는 컴파일 오류가 발생합니다. –
@Andrew 아직 문제가 해결되지 않습니다. OP는 마우스 오버 동작을 원하고'mouseMoved'는 그 동작을 오버라이드하는 올바른 방법이 아닙니다. 가능한 중복의 두 번째 대답에 쓰여지 듯이 마우스를 버튼 위로 이동 (enter)하고 경계 밖으로 빠져 나가는 것을 나타내는 (exit) 경우에는 'mouseEntered' 및'mouseExited'가됩니다. – OliPro007