【问题标题】:JFrame fixed widthJFrame固定宽度
【发布时间】:2012-10-20 13:28:34
【问题描述】:

是否可以为 JFrame 设置固定宽度?至少以下代码不起作用:

import java.awt.Dimension;
import java.awt.EventQueue;

import javax.swing.JFrame;

public final class Main  {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(500, 500);
                f.setMinimumSize(new Dimension(500, 0));
                f.setMaximumSize(new Dimension(500, Integer.MAX_VALUE));
                f.setVisible(true);
            }
        });
    }

}

最小设置有效,但最大无效。

【问题讨论】:

  • 对于BorderLayout(在API中实现)无法设置MaximumSize,
  • 为什么?另请参阅有关可用性的警告example
  • 你可以使用f.setResizable(false);

标签: java swing jframe


【解决方案1】:

在您的代码中使用f.setPreferredSize(new Dimension(500, 500));。 一定要阅读这篇文章:Java: Difference between the setPreferredSize() and setSize() methods in components 为了防止你的框架增长或缩小使用f.setResizable(false);

【讨论】:

    【解决方案2】:

    设置大小然后写入:

    JFrame.setResizable(false);
    

    【讨论】:

      【解决方案3】:

      只需将最大值设置为您要指定的值。 取决于...屏幕尺寸的最大值 或我们自己的值而不是 Integer.MAX_VALUE

      【讨论】:

        【解决方案4】:

        你可以使用

        Rectangle rc = f.getBounds();
        rc.width = 500; //set max width
        rc.height = Integer.MAX_VALUE; // set max height
        f.setMaximizedBounds(rc);
        

        希望对你有用

        【讨论】:

          猜你喜欢
          • 2012-02-12
          • 1970-01-01
          • 2012-08-22
          • 2013-12-30
          • 2011-10-29
          • 2012-02-21
          • 2015-11-04
          • 2010-11-11
          • 1970-01-01
          相关资源
          最近更新 更多