1

840 x 400 のフレームを作成し、テキスト フィールドを追加しました。デフォルトでは、Java アプリはテキスト フィールドのサイズまでしか縮小されませんでした。それぞれのサイズに固定してほしい。

を試してみましsetResizable(false)たが、うまくいきませんでした。setExtendedState()setBounds()

4

2 に答える 2

4

JPanel を contentPane として使用するか、それを contentPane に追加getPreferredSize() method and then useし、JFrame でその 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();
         }
      });
   }
}

この利点の 1 つは、他のクラスがsetSize(...)またはを介し​​て MyPanel のサイズを変更できないことsetPreferredSize(...)です。

于 2013-04-25T16:14:52.403 に答える
2

試す

 setPreferredSize(new Dimension(840,400));

フレームに名前を付けた場合、次のことができます

 name.setPreferredSize(new Dimension(840,400));
于 2013-04-25T16:02:19.510 に答える