gpt4 book ai didi

java - 保存 JPanel 图形

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:33:11 24 4
gpt4 key购买 nike

我不太确定 Graphics 在 Java 中是如何工作的,所以我在调试问题时遇到了麻烦。我有一个类 MyFrame 扩展 JPanel。现在我在 MyFrame 上做一些绘图保存并保存关于那个特定框架的属性然后将它添加到 MyFrames 的 ArrayList 集合。稍后我想调用 MyFrame 的某个实例的属性并在屏幕上重新绘制该帧。让框架的图形再次出现是我遇到的麻烦。

这里有一小段代码可以演示我的问题。

public class MyFrame extends JPanel{
private int property;
private int x;
private int y;

public MyFrame(int xp, int yp){
x = xp;
y = yp;
}

@override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillRect(x,y,5,5);
}
public void setProperty(int p){
property = p;
}
}

public class MainClass() extends JPanel{
private ArrayList<MyFrame> frames = new ArrayList<MyFrame>;
private MyFrame currentFrame = new MyFrame();

public void addFrame(int x, int y){
this.remove(currentFrame);
currentFrame = new MyFrame();
this.add(currentFrame);
frames.add(currentFrame);
}

public void setFrame(int frame){
this.remove(currentFrame);
currentFrame = frames.get(frame);
this.add(currentFrame);
}

}

总结:我希望面板在调用 setFrame 时显示正确的框架。目前,当我这样做时,设置的框架将是空白的。

最佳答案

您似乎在将 JPanel 换入和换出另一个 JPanel,执行此操作时,您必须考虑容器 JPanel 使用的布局,并且需要在交换。

但与其搞砸所有这些,为什么不走简单的路线,只需将 JPanel 或 JLabel 与使用 CardLayout 保存图像的 ImageIcon 交换? ?

关于java - 保存 JPanel 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155672/

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