import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.event.*;
import java.awt.geom.*;
import java.util.*;
public class test extends JFrame implements ActionListener, MouseListener {
private Vector<String> vlist = new Vector<String>();
private int mouseX, mouseY;
Canvas c = new Canvas();
public test() {
setSize(400,400);
addMouseListener(this);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
test frame = new test();
//frame.setBackground(Color.yellow);
frame.setVisible(true);
}
});
}
public void actionPerformed(ActionEvent ae) {
}
@Override
public void paint(Graphics g) {
Shape circle = new Ellipse2D.Float(100f, 100f, 100f, 100f);
Graphics2D ga = (Graphics2D)g;
ga.draw(circle);
}
public void move() {
}
public void drawCircle(int x, int y) {
}
public void mouseClicked(MouseEvent e) {
repaint();
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
this.mouseX=e.getX();
this.mouseY=e.getY();
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
}
자바에서 그래픽 프로그래밍을 배우기위한 테스트 프로그램을 작성하고 싶습니다. 위의 코드를 실행하려면 원이 자동으로 그려집니다. paint() 메서드가 자동 실행되는 이유는 무엇입니까? 나는 마우스를 클릭했을 때 만들어 질 원이다.자바 페인트() 자동 실행?
1) Swing 구성 요소 (예 :'JFrame')와 AWT (예 :'Canvas')를 함께 사용하지 마십시오. 2)'setSize (400,400);'사용자 정의 렌더링 컴포넌트의 참조 된 크기를 설정하고 프레임에'.so'가 호출 된 후에'pack() '을 호출합니다. 3) 동기화가 필요하지 않으면'Vector'보다는'ArrayList'를 사용하십시오. –