我正在制作游戏,但我发现了一个问题。假设我有2个类1使用JPanel / JFrame及其paintComponenet。这将把图形绘制到框架上。另一个叫做 MainMenu.java 的人只有一个Rectangle对象:
Rectangle r = new Rectangle();
在那个班级我设置属性:
r.setSize(100, 200)
我如何发送它我知道如何绘制对象。
问题:如何从另一个类中获取图形对象并将其带到带有绘画的类中并绘制它但保留其属性?
答案 0 :(得分:0)
如何从另一个类中获取图形对象并将其带到具有绘制的类上并绘制它但保留其属性?
你没有。应该在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);
您添加的每个新矩形都将在面板上绘制。您可以在没有矩形的情况下初始化列表,在添加矩形之前不会绘制任何内容。