フレームを展開するときに、menuPanelのコンポーネントを展開する必要があります。 MenuPanelはGridBayLayoutを使用していますが、パネルの塗りつぶし値と重量値の両方で微妙に変化しましたが、フレームでコンポーネントのサイズを変更するようなことはありません。GridBagLayoutを使用してJPanelを強制的にJFrameでサイズ変更する方法
表示クラスにmenuPanelを追加する方法が間違っていると思われます。さらに、TanksApplicationにレイアウトを設定しようとしましたが、それもうまくいきませんでした。私は何か基本的なことを理解していない、と思う。
メインアプリ
public class TanksApplication extends JFrame{
public TanksApplication(){
super("Tanks");
}
public static void main (String args[]){
Display display = new Display();
TanksApplication frame = new TanksApplication();
frame.add(display);
frame.setSize(600,425);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
}
}
Displayクラス
public class Display extends JPanel{
public Display(){
menuPanel = new JPanel(new GridBagLayout());
GridBagConstraints con = new GridBagConstraints();
mainMenuImageP = new JPanel();
mainMenuImageP.setBackground(Color.BLACK);
con.fill = GridBagConstraints.BOTH;
con.gridy = 0;
con.gridx = 0;
con.gridwidth = 2;
con.weightx = 0.5;
con.weighty = 0.5;
con.anchor = GridBagConstraints.CENTER;
con.ipadx = 400;
con.ipady = 300;
con.insets = new Insets(0,20,0,20);
menuPanel.add(mainMenuImageP, con);
newGameB = new JButton("New Game");
con.fill = GridBagConstraints.HORIZONTAL;
con.gridy = 1;
con.gridx = 0;
con.gridwidth = 1;
con.weightx = 0.5;
con.weighty = 0.5;
con.anchor = GridBagConstraints.CENTER;
con.ipadx = 0;
con.ipady = 0;
con.insets = new Insets(10,10,10,10);
menuPanel.add(newGameB, con);
loadGameB = new JButton("Load Game");
con.fill = GridBagConstraints.HORIZONTAL;
con.gridy = 1;
con.gridx = 1;
con.gridwidth = 1;
con.weightx = 0.5;
con.weighty = 0.5;
con.anchor = GridBagConstraints.CENTER;
con.ipadx = 0;
con.ipady = 0;
con.insets = new Insets(10,10,10,10);
menuPanel.add(loadGameB, con);
add(menuPanel);
}
これは素晴らしいアイデアです。ありがとうございます。私はそれを試してみましょう。私はDisplayがパネルであることを知らなかった、なぜ私がそれを考えなかったのか分からない。 – ulw1
それはそれでした。再度、感謝します。 – ulw1
@ ulw1:ようこそ。 menuPanelなどの内部JPanelを絶対に使用する必要がある場合は、DisplayPanelにBorderLayoutなどのコンポーネントpreferredSizesを変更するレイアウトを使用させたいとします。 –