【问题标题】:How to draw a awt object from another class and keep its properties?如何从另一个类中绘制 awt 对象并保留其属性?
【发布时间】:2014-08-10 19:19:33
【问题描述】:

我正在制作游戏,但我发现了一个问题。假设我有 2 个类 1 与 JPanel/JFrame 及其中的paintComponenet。这会将图形绘制到框架上。而另一个名为 MainMenu.java 的只有一个 Rectangle 对象:

Rectangle r = new Rectangle();

在那个类中,我为它设置了属性:

r.setSize(100, 200)

我将如何发送它我知道如何绘制对象。

问题:我如何从另一个类中取出一个图形对象并将其带到上面有油漆的类中并绘制它但保留其属性?

【问题讨论】:

  • 为什么不能像往常一样简单地将它作为对象引用传递..?

标签: java class awt graphics2d


【解决方案1】:

我如何从另一个类中获取一个图形对象并将其带到带有油漆的类并绘制它但保留其属性?

你没有。一切都应该在 paintComponent 方法的图形上下文中绘制。

一种解决方案是在您正在绘制的面板类中保留List<Rectangle>,并遍历列表以绘制对象。在类中有一个方法可以向它添加形状

public class DrawingPanel extends JPanel {
    private List<Rectangle> rects = new ArrayList<Rectangle>();

    protected void paintComponent(Grapchics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        for (Rectangle rect: rects) {
            // draw rectangle
        }
    }

    public void addRectangle(Rectangle rect) {
        rects.add(rect);
        repaint();
    }
}

现在你可以做类似的事情

DrawingPanel panel = new DrawingPanel();
Rectangle rect = new Rectangle(...);
panel.addRectagnle(rect);

您添加的每个新矩形都将在面板上绘制。您可以初始化没有矩形的列表,在添加之前不会绘制任何内容。

【讨论】:

  • 谢谢!我在想这个。
猜你喜欢
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 2023-01-19
  • 2019-04-02
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
相关资源
最近更新 更多