java - 当我运行 .jar 时,除命令提示符外,Swing 不会重新绘制

标签 java swing jar cardlayout

我有一个包含很多面板的项目。我有一种方法可以在卡片布局面板中切换卡片(jpanel)(见下文)。当我从 IDE (Netbeans) 运行它以及从命令提示符运行 jar (java -jar MyStuff.jar) 时,这一切都工作正常。但是,当我双击 Jar 时,卡片会发生变化,但不会重新绘制,从而产生不良结果(当我将鼠标悬停在出现的组件上时)。如果我再次单击该按钮来再次调用该方法,它将适用。我立即需要帮助:) 谢谢!

/**
* Shows a panel by the given panel name (in the cardPanel)
*
* @param panelName
*/
private void showPanel(String panelName) {
  if (panelName.equals("revenueSources")) {
    backButtonIcon.setVisible(false);
  } else {
    backButtonIcon.setVisible(true);
  }
  currentPanelName = panelName;
  ((CardLayout) cardPanel.getLayout()).show(cardPanel, panelName);
  repaint();
  revalidate();
}

最佳答案

(当我将鼠标悬停在组件上时出现) 此代码仅交换

repaint();
revalidate();

revalidate();
repaint();

关于java - 当我运行 .jar 时,除命令提示符外,Swing 不会重新绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055411/

相关文章:

java - 如何修改计算机 Balance() 方法以确保金额​​为正且不含分?

java - 为什么 java 在使用 -jar 开关执行 jar 文件时不遵循类路径?

Java Applet 打开、编辑和保存图像文件

java - map 的奇怪行为

java - GridBagLayout 读取组件

android - 在 Gradle 构建过程中从 Android Studio 中的外部 JAR 中排除包

java - Eclipse .jar 创建镜像文件未打包

java - 将 awssdk s3 v2 与 GCS 和 Minio 网关结合使用时出现 Etag 解码错误

java - 如何将 Control-Parm 中的工作流属性传递到 Alfresco 中的 FTL 文件?

java - 将多个 JProgressBar 添加到 JTable 的 TableColumn