在GUI上无法创建2个以上的圆圈

时间:2014-12-06 22:11:42

标签: java user-interface

我正在学习使用GUI,我正在尝试绘制多个椭圆。但在下面的例子中,由于某种原因,我无法绘制超过2个椭圆。

frame.getContentPane()。add(drawPanel); 绘制第一个椭圆

frame.add(new DrawPanel()); 绘制第二个椭圆

和另一个 frame.add(新的DrawPanel()); 不会绘制任何内容。为什么呢?

package Package1;

import javax.swing.JFrame;

public class Gui {

public static void main(String[] args) {

    Gui gui = new Gui();
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    DrawPanel drawPanel = new DrawPanel();

    frame.getContentPane().add(drawPanel); // This creates the 1st circle
    frame.setSize(300, 300);
    frame.setVisible(true);
    frame.add(new DrawPanel()); // This creates the 2nd circle
    frame.add(new DrawPanel()); // This doesn't create anything
   }
}

package Package1;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class DrawPanel extends JPanel {

public void paintComponent(Graphics g) {

    int x = (int) (Math.random() * 100);
    int y = (int) (Math.random() * 100);

    g.setColor(Color.RED);
    g.drawOval(x, y, 150, 150);
}

}

1 个答案:

答案 0 :(得分:1)

JFrame有一个BorderLayout。默认情况下,当组件添加到一个组件时,它将位于框架的中心。当添加另一个时,它也会进入中心,覆盖旧的。要解决此问题,您可以使用不同的布局(FlowLayout可能是您正在寻找的)或使用边框布局的不同部分(例如PAGE_ENDLINE_START)。