在同一JPanel框架上添加多个Polygon对象 [英] Add multiple Polygon objects on the same JPanel frame

查看:98
本文介绍了在同一JPanel框架上添加多个Polygon对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有一个使用Polygon绘制星形的DrawStar类:

So I have a DrawStar class that draws a star using Polygon like that:

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框架来绘制星星:

Then in my main class I create a JPanel frame to draw the stars:

    ...
    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是我为星形颜色实现的功能)。如何在框架上添加它们?
还有一件事,即使我将框架的背景颜色设置为黑色,它也会在绘制星星后变为灰色。

However, it only works with one star. If I add a second one (like above), none is drawn (CreateColor is a function I implement for the star color). How can I add them all along on the frame? And one more thing, even if I set the frame's background color to Black, it gets Gray after the star is drawn.

谢谢!

推荐答案

我重现你的问题。这是布局问题。默认情况下, JFrame 具有 BorderLayout ,其中 CENTER 对齐。您应该更改布局和屏幕大小。

I reproduce your problem. It was Layout problem. By default JFrame has BorderLayout with CENTER alignment. You should change your layout and screen size.

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)。但这不是最佳解决方案。你应该动态获得 x y ,使用 getWidth()<对应屏幕尺寸/ code>和 getHeight()方法。

To see the two stars I used GridLayout(1,2) and bigger setSize(1000, 700). But it is not optimum solution. You should get the x, y dynamically with corresponding to Screen Size using getWidth() and getHeight() method.

这篇关于在同一JPanel框架上添加多个Polygon对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆