【问题标题】:JTable only first row visible with Jre 1.7.0_75 and furtherJTable 仅在 Jre 1.7.0_75 及更高版本中可见的第一行
【发布时间】:2015-09-10 11:08:36
【问题描述】:

我们在一个非常古老的大型应用程序中使用 JTable 来显示一些信息。到目前为止,我们正在开发 Jre 1.7.0_17 或 1.7.0_51。最近我们尝试使用升级到 1.7.0_75 的 JRE 来测试我们的应用程序。 我们注意到,当显示 JTable 时,第一次只出现一行。然而,在调试期间,我们看到所有行的数据都被添加到表中。我尝试了刷新、重新验证、重新绘制、fireTableDataChanged 等,但仍然只是第一次只出现第一行。如果我们再次隐藏并显示表格,所有行都会开始出现。还在 JRE 1.7.0_80、1.8.0_31、1.8.0_45 和 1.8.0_51 上进行了测试,并且该问题是可重现的。 任何提示都会有所帮助。

(注意:该应用程序是在非常旧的 java 版本上开发的,并且一直使用旧样式的摆动对话框)

提前致谢!

【问题讨论】:

  • Swing GUI 对象应event dispatch thread 上构造和操作。
  • 是的,这是小心的!
  • 如需尽快获得更好的帮助,请发帖minimal reproducible exampleShort, Self Contained, Correct Example
  • 我会尝试提供一个...但最令我惊讶的是,在新 JRE 上运行良好的东西开始表现不同。
  • ".. 最令我惊讶的是,在新的 JRE 上运行良好的东西开始表现不同。" 代码可以做的很多事情都会产生不同的效果结果在不同的机器或 Java 版本上。我很惊讶您会花时间讨论让您感到惊讶的事情,而将这些时间投入到制作 MCVE 上会更好。

标签: java swing jtable


【解决方案1】:

我没有看到您的代码,但这里的一个典型问题是组件的大小。 最有可能的是,您的 JTable 出现的布局开始以不同的方式计算组件的大小。

我的假设很容易验证,将布局更改为不使用首选尺寸或其他类似参数来计算组件尺寸的东西。或者,您可以显式设置大小以查看发生了什么。

这可以通过以下方式完成:

component.setSize(500, 500);

请注意,您的 JTable 周围可能不仅仅是 1 个容器。您必须确保整个堆栈产生正确的大小,但从 JTable 开始,因为看起来大小是基于某些初始空表的首选大小。

一旦您确认问题出在我认为的位置,您需要通过更改布局或布局的参数来修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多