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) {
}
}
私は、Javaでグラフィックプログラミングを学ぶためのテストプログラムを書きたいと思っています。上記のコードを実行するには、円が自動的に描画されます。なぜpaint()メソッドが自動的に実行されるのですか?私はマウスをクリックしたときに作成される円です。java paint()は自動的に実行されますか?
その他の具体的なアドバイスに加えて、1)Swingコンポーネント(例: 'JFrame')とAWT(例:' Canvas')を混在させないでください。 2) 'setSize(400,400);'カスタムレンダリングコンポーネントの参照されるサイズを設定し、 'pack()'がフレームに追加された後に 'pack()'を呼び出します。 3)同期が必要ない場合、 'Vector'ではなく' ArrayList'を使います。 –