我正在编写一个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 )。
有什么想法吗?
谢谢,彼得答案 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()
可能不会重新绘制小部件本身,只会重新显示其子组件