我正在学习使用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);
}
}
答案 0 :(得分:1)
JFrame
有一个BorderLayout
。默认情况下,当组件添加到一个组件时,它将位于框架的中心。当添加另一个时,它也会进入中心,覆盖旧的。要解决此问题,您可以使用不同的布局(FlowLayout
可能是您正在寻找的)或使用边框布局的不同部分(例如PAGE_END
或LINE_START
)。