2012-01-01 92 views
-2

我正在写一个简单的幻灯片程序。在那个程序中,我会在一个新的jpanel中显示所有幻灯片的小缩略图。在新的jpanel中,点击2个缩略图后,它应该交换它们。但是,在交换它们之后,jpanel不会刷新。如果我通过调用createAndShowGUI()函数来创建新的jpanel,那没关系,但是之后我需要关闭旧的jpanel。刷新JPanel或关闭并再次打开

下面是我的简单的类,

http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/GridLayoutDemoProject/src/layout/GridLayoutDemo.java

在我的主程序,如果我点击“幻灯片浏览模式”按钮处理程序编译下面的代码

gridLayoutDemoObject.createAndShowGUI();

什么是解决方案,我应该怎么做?

谢谢。

+0

你应该发布一些如何交换图像的代码。也许你需要调用refresh()。 – 2012-01-01 23:09:17

+0

其实我并没有交换图片,我有一个叫幻灯片的类,每个幻灯片对象都有不同类型的对象,比如线矩形椭圆等。因此,在我的jframe的actionlistener中跟踪我的点击,并且尊重为此,它在我的主程序中交换。交换是正确的,因为我可以看到我的主屏幕上的变化,但我看不到在新的打开的窗口中有所有缩略图的变化 – CanCeylan 2012-01-01 23:15:57

回答

3

您没有提供足够的信息来表明您如何显示图像或如何交换它们,因此很难给出正确的答案。

我会通过使用JLabel(或没有边框的JButton)来显示图像。然后,当您只需使用setIcon(...)来交换图标时,标签就会重新绘制自己。

下一次发布SSCCE表明问题,所以我们不必猜测你在说什么。

+0

对不起,这是正确的,我显示所有带有按钮的幻灯片图标使用非常相似代码http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/GridLayoutDemoProject/src/layout/GridLayoutDemo.java – CanCeylan 2012-01-01 23:18:28

+0

@CanCeylan:camickr的很好的建议(交换ImageIcons)解决了你的问题吗?如果这样接受它。如果没有,至少可以对它(我有)进行投票,并创建和发布您的SSCCE,并对具体问题进行更详细的解释。 – 2012-01-01 23:35:53

+0

@camickr,我首先添加了创建所有按钮到一个数组列表,我用下面的方法交换, JButton dummy = butonlar.get(y); butonlar.set(y,butonlar.get(x)); butonlar.set(x,dummy);重绘(); (butonlar是我的ArrayList)在我实际的程序 ,幻灯片交换但是有我在slidesorter窗口 – CanCeylan 2012-01-02 00:27:41