加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 保存JPanel图形

发布时间:2020-12-15 08:43:08 所属栏目:Java 来源:网络整理
导读:我不太确定图形如何在 Java中工作,所以我无法调试我的问题. 我有一个类MyFrame扩展JPanel.现在我在MyFrame上做一些绘图保存并保存关于该特定帧的属性,然后添加一个MyFrames的ArrayList集合.后来我想回忆一下MyFrame的某个实例的属性,并在屏幕上重绘该帧.让框
我不太确定图形如何在 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使用的布局,并且您需要在交换后调用revalidate并重新映射容器-JPanel.

但是,为什么不通过使用CardLayout交换JPanels或者JLabel与ImageIcons来保存图像,而不是搞砸所有这些?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读