如何将JFrame保持为特定的宽度和高度?

时间:2013-04-25 15:59:27

标签: java swing jframe

我制作了一个840乘400帧并添加了一个文本字段。默认情况下,Java应用程序仅缩小到文本字段的大小。我希望它固定在各自的大小。

我尝试setResizable(false)setExtendedState()setBounds()但无济于事。

2 个答案:

答案 0 :(得分:4)

最好将JPanel用作contentPane或将其添加到contentPane,并覆盖JFrame上的getPreferredSize() method and then use pack()`。例如:

import java.awt.Dimension;
import javax.swing.*;

@SuppressWarnings("serial")
public class MyPanel extends JPanel {
   private static final int PREF_W = 400;
   private static final int PREF_H = 300;

   public MyPanel() {
      //...
   }

   @Override
   public Dimension getPreferredSize() {
      return new Dimension(PREF_W, PREF_H);
   }

   private static void createAndShowGui() {
      MyPanel myPanel = new MyPanel();
      JFrame frame = new JFrame("My GUI");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(myPanel);
      frame.setResizable(false);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

其中一个优点是其他类无法通过setSize(...)setPreferredSize(...)更改MyPanel的大小。

答案 1 :(得分:2)

尝试

 setPreferredSize(new Dimension(840,400));

如果您为框架命名,则可以

 name.setPreferredSize(new Dimension(840,400));