java JFrame 调整大小

标签 java swing jframe componentlistener

我的项目中有以下代码段。

someJFrame.addComponentListener(new ComponentAdapter(){  
    public void componentResized(ComponentEvent e) {
    pane.resize(new Dimension(getSize().width/5, getSize().height/3));
    pane.revalidate();
    pane.repaint();
    }
});

当 JFrame 第一次初始化时,似乎在开始时调用了 componentResized() 方法,即使用户没有调整 JFrame 的大小 - 我需要防止这种情况发生。我只希望在真正调整大小时调用 componetResized(),而不是在 JFrame 初始化时调用。

最佳答案

这是要走的路-

  1. 定义一个 boolean 标志来指示组件是否显示,默认为 false
  2. 重写 componentShown() 并将此标志设置为 true,当框架可见时调用此标志
  3. 在 componentResized() 中检查是否设置了 componentShown 标志,然后才执行某些操作

类似这样的东西-

    private boolean componentShown = false; // instance variable

    someJFrame.addComponentListener(new ComponentAdapter() {
        public void componentResized(ComponentEvent e) {
            if(componentShown) {
               System.out.println("Component RESIZED");
            }  
        }

        public void componentShown(ComponentEvent e) {
            componentShown = true;
        }
    });

关于java JFrame 调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562133/

相关文章:

java - 更新我的 JFrame 时遇到问题

java.lang.Long 不能转换为 java.lang.Integer

java - 添加和返回天数的项目

java - 缓冲图像找不到文件

java - 如何让 JLabel 在 JFrame 中动态调整大小?

java - 如何在 JFrame 中将 Jpanel 居中?

java - JFrame 在 TextPane 设置之前退出

java - 带有 mod_jk 的 Apache + Tomcat - 网站挂起

java - 在动态网页上从数据库中搜索数据

java - 如何使用 JTable 鼠标单击事件将图像从 JTable 显示到 JLabel 或从数据库显示到 JLabel?