Java でデモ ペイント アプリケーションを実装しています。私は今、単一の形を描くことができます。もう一度描こうとすると、前の形が消えて新しい形が出てきます。BorderLayut.CENTER で内部フレームに JPanel を埋め込んでいます。
この内部フレームに複数の図形を描画する方法を教えてください。
public class InternalFrame extends JInternalFrame{
public InternalFrame(String string, boolean b, boolean c, boolean d,
boolean e) {
super(string,b,c,d);
MyShape myShape2 = new MyRectangle();
add(myShape2, BorderLayout.NORTH);
MyShape myShape1 = new MyCircle();
add(myShape1, BorderLayout.SOUTH);
}
}
public class MyRectangle extends MyShape {
public void paintComponent(Graphics g) {
super.paintComponent(g);
int temp = 0;
System.out.println("rect");
// draw circle
g.setColor(Color.RED);
g.fillRect(startX, startY, endX - startX, endY - startY);
g.setColor(Color.GREEN);
g.drawRect(startX, startY, endX - startX, endY - startY);
}
}
public abstract class MyShape extends JPanel {
protected int startX;
protected int startY;
protected int endX;
protected int endY;
MyShape(){
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent event) {
// To initialisise the starting and ending point
setStart(0,0);
setEnd(0,0);
// To set starting point
setStart(event.getX(), event.getY());
}
// handle mouse release event
public void mouseReleased(MouseEvent event) {
setEnd(event.getX(),event.getY());
}
});
}
public void setStart(int x, int y) {
startX = x;
startY = y;
repaint();
}
public void setEnd(int x, int y){
endX = x;
endY = y;
repaint();
}
}