【问题标题】:Swing windowStateChanged listener returns previous property values of componentsSwing windowStateChanged 监听器返回组件之前的属性值
【发布时间】:2016-11-30 22:54:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java swing jsplitpane windowlistener windowstate


    【解决方案1】:

    我通过使用addComponentListener() 并为JFrame 处理componentResized 事件找到了自己的解决方案。在此事件中更新了所有子组件,因此我能够获得新的宽度并执行我的任务。仍然不完美,但足够接近。请参阅How to Write a Component Listener 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多