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); } } 摘要: 解决方法
您似乎正在将JPanel交换进出另一个JPanel,并且在执行此操作时,您必须考虑容器-JPanel使用的布局,并且您需要在交换后调用revalidate并重新映射容器-JPanel.
但是,为什么不通过使用CardLayout交换JPanels或者JLabel与ImageIcons来保存图像,而不是搞砸所有这些? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |