我有一個擴展JPanel並繪製三角形的類。我從其他課程中調用它來創建三個三角形,但是當繪製第三個三角形時,前兩個三角形消失了。我如何添加多個顯示在一起的三角形。 代碼如下:將多個組件添加到Jframe.getcontentpane()
Triangle.Java:
public class Triangle extends JPanel{
Point p1, p2, p3;
public Triangle(Point _p1, Point _p2, Point _p3)
{
this.p1=_p1;
this.p2=_p2;
this.p3=_p3;
}
public void paint(Graphics g)
{
super.paint(g);
int[] xs = {p1.x,p2.x,p3.x};
int[] ys = {p1.y,p2.y,p3.y};
Polygon triangle = new Polygon(xs, ys, xs.length);
g.fillPolygon(triangle);
}
}
SwingApplication.java:
public class SwingApplication {
public static void main(String[] args) {
Triangle triangle1=new Triangle(new Point(120,10), new Point(170,110),new Point(220,10));
Triangle triangle2=new Triangle(new Point(120,210), new Point(170,110), new Point(220,210));
Triangle triangle3=new Triangle(new Point(10,400), new Point(170,210), new Point(320,400));
JFrame frame = new JFrame("Swing Application - Question 2");
//frame.setLayout(new FlowLayout());
frame.getContentPane().add(triangle1);
frame.getContentPane().add(triangle2);
frame.getContentPane().add(triangle3);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 450);
//frame.pack();
frame.setVisible(true);
}
}
我打算使用separete JPanel,但您的建議是正確的, paint vs paintComponent +1 – mKorbel
你可以提一下你提到的一些教程。 – user906763
@ user906763你可能想看看[這裏](http://download.oracle.com/javase/tutorial/uiswing/layout/index.html) – Howard