2014-12-15 2 views
0

전 인터넷을 검색했지만 원이 왜 JFrame의 중간에서 왜곡 된 것처럼 보일 수 없었습니다 (미안하지만, 이미지를 게시하는 데 10 개의 평판이 필요했기 때문에 미안합니다) . 내 코드를 검사했지만 오류가 발견되지 않았습니다. Java GUI 프로그래밍의 초보자입니다. 당신이 패널에 MouseMotionListener를 추가하지 않아도 당신은 결코 당신의 패널에 init()를 호출하지 않습니다자바에서 MouseMotionListener와 JPanel을 결합하는 방법

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

public class test1 extends JPanel implements MouseMotionListener 
{ 

private static final long serialVersionUID = -2068330714634802982L; 
public int Mousex,Mousey; 
public void init() 
{ 
    addMouseMotionListener(this); 
} 
public void mouseMoved(MouseEvent e) 
{ 
    Mousex=e.getX(); 
    Mousey=e.getY(); 
    repaint(); 
} 
public void mouseDragged(MouseEvent e){} 


public void paintComponent(Graphics g) 
{ 
    Graphics2D g2=(Graphics2D)g; 
    g2.setColor(Color.GREEN); 
    g2.fillOval(Mousex,Mousey,50,50); 

} 


public static void main(String[] args) 
{ 
    test1 t=new test1(); 
    JFrame frame=new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(1305,650); 
    frame.setLocationRelativeTo(null); 
    frame.getContentPane().add(t); 
    frame.setResizable(true); 
    frame.setVisible(true); 
} 
} 
+0

마우스가 현재 위치에있는 사각형을 그릴 수 없습니다. –

+0

이 정보를 포함하려면 질문을 편집해야합니다. – RustyTheBoyRobot

답변

0

합니다. 또한 paintComponent 메서드에서 부모 컨테이너를 다시 그리기 위해 호출해야하는 경우에 super.paintComponent(g);이 있어야합니다. 그렇지 않으면 마지막 사각형이 명확하게 표시되지 않습니다.

+0

감사합니다. 그러나 JFrame의 중간에서 마우스를 움직이면 원이 왜곡되어 보입니다. 이유를 말해 주시고 해결 방법을 알려주십시오. 미리 감사드립니다 !! –

+0

답변에 표시된대로'super.paintComponent (g)'를 추가 했습니까? – Reimeus

+0

사실 내 마우스를 따라가는 일련의 원이 필요합니다. –

0

: 이 지금까지 내 코드입니다. 패널 객체를 만든 후에

t.init(); 

을 추가하십시오. 또한, 대신 MouseMotionListener을 추가하여 클래스에 생성자를 추가, 그래서 당신은 클래스의 개체를 만들 때 그것은 adden 맞아 : 당신은

t.init(); 

MouseMotionListener을 등록 호출 할 필요가

public test1() { 
    addMouseMotionListener(this); 
} 
관련 문제