gpt4 book ai didi

java - 在同一 JPanel 框架上添加多个多边形对象

转载 作者:行者123 更新时间:2023-11-30 11:25:26 25 4
gpt4 key购买 nike

所以我有一个 DrawStar 类,它使用 Polygon 绘制星星:

public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
int[] cX = new int[] {x, x+5, x+20, x+8, x+16, x, x-16, x-8, x-20, x-5, x};
int[] cY = new int[] {y, y+14, y+14, y+22, y+39, y+29, y+39, y+22, y+14, y+14, y};
Polygon pol = new Polygon(cX, cY, 11);
g2.setColor(this.color);
g2.draw(pol);
g2.fillPolygon(pol);
}

然后在我的主类中创建一个 JPanel 框架来绘制星星:

    ...
JFrame starsframe = new JFrame();
starsframe.setTitle("Random stars...");
starsframe.setSize(600, 400);
starsframe.setLocationRelativeTo(null);
starsframe.setVisible(true);
starsframe.setResizable(false);
starsframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

DrawStar star1 = new DrawStar(300, 200, CreateColor(color));
starsframe.add(star1);
DrawStar star2 = new DrawStar(400, 300, CreateColor(color));
starsframe.add(star2);
...

但是,它只适用于一颗星。如果我添加第二个(如上),则不会绘制任何内容(CreateColor 是我为星形颜色实现的函数)。我怎样才能将它们一直添加到框架上?还有一件事,即使我将框架的背景颜色设置为黑色,绘制星星后它也会变成灰色。

谢谢!

最佳答案

我重现了你的问题。这是 Layout 问题。默认情况下,JFrameBorderLayoutCENTER 对齐。您应该更改布局和屏幕尺寸。

JFrame starsframe = new JFrame();
starsframe.setTitle("Random stars...");
starsframe.setLayout(new GridLayout( 1,2));// Use gridLayout
DrawStar star1 = new DrawStar(300, 200, Color.red);
starsframe.add(star1);
DrawStar star2 = new DrawStar(400, 300, Color.blue);
starsframe.add(star2);

starsframe.setSize(1000,700);// Increase the screen size.
starsframe.setLocationRelativeTo(null);
starsframe.setVisible(true);
starsframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

为了查看两颗星,我使用了 GridLayout(1,2) 和更大的 setSize(1000, 700)。但这不是最佳解决方案。您应该使用 getWidth()getHeight() 方法动态获取与屏幕尺寸相对应的 xy .

关于java - 在同一 JPanel 框架上添加多个多边形对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20285226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com