【问题标题】:Refreshing the JPanel or Closing and Opening Again刷新 JPanel 或关闭并再次打开
【发布时间】:2023-04-03 23:52:01
【问题描述】:

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

下面是我的简单类,

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

在我的主程序中,如果我点击“幻灯片分拣模式”按钮处理程序编译以下代码

gridLayoutDemoObject.createAndShowGUI();

解决方案是什么,我应该如何解决?

谢谢。

【问题讨论】:

  • 您应该发布一些关于如何交换图像的代码。也许你需要调用 refresh()。
  • 实际上我并没有交换图像,我有一个名为 slides 的类,每个幻灯片对象都有不同类型的对象,例如直线矩形椭圆等。因此,在我的 jframe 的 actionlistener 中保持跟踪我的点击次数,相对于此,它在我的主程序中交换。交换是正确的,因为我可以在主屏幕中看到更改,但是在包含所有缩略图的新打开窗口中看不到更改

标签: java swing refresh jpanel layout-manager


【解决方案1】:

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

我会使用 JLabel(或没有边框的 JButton)来显示图像。然后,当您可以使用setIcon(...) 交换图标时,标签将自行重新绘制。

下次发布SSCCE 来说明问题,这样我们就不必猜测您在说什么了。

【讨论】:

  • 抱歉,没错,我使用与此代码非常相似的代码docs.oracle.com/javase/tutorial/uiswing/examples/layout/… 显示所有带有按钮的幻灯片图标
  • @CanCeylan:camickr 的好建议(交换 ImageIcons)是否解决了您的问题?如果是这样接受它。如果没有,至少投票(我有)并创建并发布您的 SSCCE 以及对特定问题的更详细说明。
  • @camickr,我首先将创建的所有按钮添加到一个数组列表中,然后使用以下方法进行交换,JButton dummy = butonlar.get(y); butonlar.set(y, butonlar.get(x)); butonlar.set(x, dummy);重绘(); (butonlar 是我的数组列表)在我的实际程序中,幻灯片正在交换但是我的幻灯片窗口没有变化
  • @CanCeylan:您仍然没有向我们提供足够的信息来获得关于问题所在的最微弱的线索,并且尽管多次请求,您仍然没有显示违规代码或 SSCCE - 为什么?
  • 我不知道你在做什么。在 ArrayList 中交换按钮与 GUI 无关。
猜你喜欢
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 2016-04-14
相关资源
最近更新 更多