我需要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使用一個佈局來改變其組件preferredSizes,比如BorderLayout。 –