验证JPanel的问题

时间:2015-02-18 10:02:06

标签: java swing user-interface

我正在编写一个GUI程序,其主类扩展JFrame实现ActionListener。 GUI上有许多元素,包括一些扩展JPanel的自定义小部件。主窗口有一个Widgets的两个实例,但只有第一个实例在加载新数据后正确刷新(应用程序可以从文件加载数据并填充GUI的大约25个字段)。自定义Widget的第二个实例在之前使用过一次之后不会做出反应(不会更改值)。很抱歉没有办法提取可以重现问题的小代码片段,但我使用了JPanel(等)的 paramString()方法。

第一次使用小部件(一切正常),我明白了:     ,197,73,862x82,无效,布局= javax.swing.GroupLayout,alignmentX = 0.0,alignmentY = 0.0,边界= javax.swing.border.BevelBorder中@ 2ef5774e,旗帜= 9,MAXIMUMSIZE =,=的minimumSize,首选大小=

第二次使用小部件(并且它不是被动的),我明白了:

,0,0,0x0,invalid,layout=javax.swing.GroupLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.BevelBorder@552d7308,flags=9,maximumSize=,minimumSize=,preferredSize=

我还试图重新验证()小部件及其父级,但无济于事,this.myWidget.isValid()返回false(而我的应用程序中其他组件的相同方法返回true )。

有什么想法吗?

谢谢,彼得

1 个答案:

答案 0 :(得分:0)

我想当小部件返回时

197,73,862x82,invalid,layout=javax.swing.GroupLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.BevelBorder@2ef5774e,flags=9,maximumSize=,minimumSize=,preferredSize=

第一个数字是x=197, y=73, width=862, height=82。这只是一个猜测,但是第二次你得到

,0,0,0x0,invalid,layout=javax.swing.GroupLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.BevelBorder@552d7308,flags=9,maximumSize=,minimumSize=,preferredSize=

这意味着x=0, y=0, width=0, height=0然后我可以建议您尝试手动设置小部件的大小0x0大小不是有效大小。

另外,我建议你为你的Widget更改revalidate()repaint()的调用,因为revalidate()可能不会重新绘制小部件本身,只会重新显示其子组件