私の質問は、 (Windows プラットフォームで)復元を押したときに、なぜJFrame
非常に小さいのかということです (以下のスクリーンショットを参照)。
JFrame の状態に関するこのコードを使用します。
this.setExtendedState(View.MAXIMIZED_BOTH);
私は使用する必要がありますsetMinimumSize()
か?
誰も彼の質問を理解していなかったと思います。彼はウィンドウを最大化するのではなく、「元に戻す」を押したときにウィンドウがそれほど小さくならないようにしたいと考えています。したがって、「元に戻す」は、「最大化」が押される前のサイズにウィンドウを復元します。
だから私がしたことはこれでした
int Width = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int Height = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().getHeight();
this.setSize(Width-100,Height-100);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
したがって、Restore Down を押すたびに、最初はサイズが画面サイズ (幅と高さが 100 ピクセル) になります。
AFTERthis.setExtendedState(JFrame.MAXIMIZED_BOTH)
が実行されていることを確認してください。また、呼び出しがある場合は、呼び出しの後に実行されることを確認してください。 setVisible(true)
setResizable(false)
setExtendedState()
は何のクラスView
ですか?
JFrame
サイズを最大に設定しようとしている場合は、次のようにします (JFrame
ではなく、クラスで使用可能な静的変数を使用したことに注意してくださいView
)。
JFrame frame=...;
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
これは私の問題に対する最初の最も正確な質問だったので、ここで見つけたものを追加します。私はそれが3歳であることを知っていますが、私の答えは将来誰かを助けるかもしれません. 私の問題は上記と同じでした。私が使用したJframeを構築したとき:
frame.setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
「元に戻す」ボタンをクリックすると、ウィンドウは非常に小さく、画面の左上隅にありました。私はこれを呼び出して修正しました:
frame.setBounds(100, 100, 450, 300);
setVisible(true) の後。これが私の編集後のコードです。元のコードはEclipse WindowBuilderで作成されました。後は編集してるだけです。コードは次のとおりです。
public class MainWindow extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow frame = new MainWindow();
frame.setVisible(true);
frame.setBounds(100, 100, 450, 300);
frame.setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainWindow() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
//setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}
}
Jframeが表示された後、基本的に何が起こっているか(私が判断できる限り)、最初に450x300のサイズに設定され、すぐにサイズが最大化されます。復元ボタンを押すと、450x300 サイズに設定されます。現在、ウィンドウ サイズを以前のサイズに設定するために使用された方法をオーバーライドする方法を探しています (最大に達する前に) が、まだ質問する必要がある時点ではありません。