0

我有一个带有 JSplitPane 的 Swing 应用程序,我想在窗口最大化或恢复后立即获得 JSplitPane 的宽度。但我似乎无法获得正确的值,它总是返回 JSplitPane 的先前宽度。不是窗口状态改变后的宽度。

我知道我必须使用evt.getNewState()for NORMAL 和 MAXIMIZED_BOTH 进行验证,但这并不重要。

addWindowStateListener(new java.awt.event.WindowStateListener() {
    public void windowStateChanged(java.awt.event.WindowEvent evt) {
       System.out.println(jsp.getWidth());
    }
});

1812如果恢复并1120最大化,则会打印出来。我还尝试了其他一些组件,并得到了相同的结果。我该如何克服这个问题?

4

1 回答 1

1

我通过使用addComponentListener()componentResized处理JFrame. 在此事件中更新了所有子组件,因此我能够获得新的宽度并执行我的任务。仍然不完美但足够接近。有关更多信息,请参阅如何编写组件侦听器

于 2016-12-01T01:33:52.237 回答