java - 如何解决 Swing GUI 错误?

标签 java swing user-interface jinternalframe

我正在开发一个 Swing 应用程序,一切似乎都运行良好,但最近我遇到了一些 GUI 问题。 问题是,当我在另一个框架中打开 JinternalFrame 时,它​​工作正常,但是当我再次打开它时,子 JintenalFrame 失去了对自身的控制,布局丢失或可能被破坏,我得到了一些可以清楚解释问题的照片:

enter image description here

这是第一个 JinternalFrame,当我单击更新按钮时,第二个 JinternalFrame 会显示在其中,如下所示:

enter image description here

但是当我关闭第二个并再次打开它时,问题如下所示: enter image description here

IDE 会触发 NPE 提及:

Hibernate: select modalite0_.id_mod as id1_6_, modalite0_.libele as libele6_ from   
Modalite modalite0_
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JTable.prepareRenderer(JTable.java:5735)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JViewport.paint(JViewport.java:731)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)

所以我想问是否有办法追踪这个错误?

我使用 Netbeans7.2 作为带有 jre 7 的 ide。

最佳答案

@扎卡里亚·马拉赫

  • 为弹出窗口创建JDialog,整个JVM实例只有一个JDialog,假设某一时刻只能看到一个弹出窗口,设置合适JDialog.setDefaultCloseOperations(HIDE_ON_CLOSE)

  • 创建嵌套所有JComponentsJPanel

  • XxxTableModel 添加/初始化到 JTable,错误编码的渲染器和空模型导致 prepareRenderer 发生异常 code> 对于所有编码链接、转换、值比较,然后必须测试模型是否包含 prepareRenderer 内的数据(如果通过),则让渲染器中的任何内容正常工作

  • 错误编码的 renderer 以及 EDT 之外的更新导致 prepareRenderer 的所有硬编码链接、转换、值比较出现异常,

    <
<小时/>
  • 现在您只能使用 JDialog 及其内容的可见性

  • 隐藏JDialog

  • 在有几个 View 的情况下使用CardLayout,设置切换到正确的卡片,

  • JComponent 中删除所有值,或从 model 中删除所有数据,

  • 切勿重置、重新初始化或重新创建任何对象,

  • 使用 SwingWorker 获取来自任何外部源的数据,并使用 PropertyChangeListener 进行监听,have to test, to check for exceptions by using get() in done()

  • done() 中将值(或通过在 processpublish 中使用批处理)设置为 JComponents,其模型s

  • 然后调用JDialog.pack(),使用JDialog移动到屏幕上的正确坐标(相对于JComponents ),到 Point,然后显示包裹在 invokeLater(required)

  • 中的 JDialog
<小时/>
  • 生产代码要使用 Runnable#Thread,但所有到 Swing GUI 的输出都必须包装到 invokeLater 中,您可以忽略声明的一些方法Swing 是线程安全的

关于java - 如何解决 Swing GUI 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431674/

相关文章:

javascript - 从 Titanium Mobile 中的 TableView 获取表行

java - 使用 Java 7 的 Linux 上的立体问题 - 如何在将组件添加到父组件后更改组件的 GC

java - swing:制作一个带有标签的 JProgressBar?

jquery - UI 可用性 - 重新排序和合并列

java - JEdi​​torPane 将一些样式变成蓝色

java - 如何在 java swing 中创建下载按钮/链接?

Jquery 对话框和 Div 位置

java - 如何将文件中的多行读取到字符串中以放入 jTextArea 中?

java - 计算给定字符串中特殊字符的数量

java - 为什么我不能使用以下字符串构建?