我正在嘗試使用GridBagLayout來創建一個包含具有網格佈局的JPanel和只有大按鈕的JPanel的JFrame。我希望所有行的大小相同,並且JButton的JPanel與一行的大小相同。但是,當前爲空的按鈕面板約爲JFrame的1/3。我不太清楚發生了什麼,但是對於我來說維護這個結構非常重要,因爲我的其他代碼使用了這種結構。任何幫助表示讚賞,並提前感謝您。使用GridBagLayout進行錯誤的大小調整
這是我的代碼:
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
public class Minesweeper extends JPanel {
private final int SIZE = 7;
public void startGame(){
JFrame holder = new JFrame();
JPanel window = new JPanel();
JPanel pan = new JPanel();
holder.setLayout(new GridBagLayout());
GridBagConstraints con = new GridBagConstraints();
con.weightx = 1;
con.weighty = 1;
con.gridx = 0;
con.gridy = 0;
con.fill = GridBagConstraints.BOTH;
con.gridheight = SIZE;
con.gridwidth = SIZE;
holder.getContentPane().setBackground(Color.darkGray);
holder.setSize(450, 450);
holder.setResizable(false);
holder.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBackground(Color.darkGray);
window.setLayout(new GridLayout(SIZE, SIZE));
for (int c=0; c<(SIZE*SIZE); c++){
int row = (c/SIZE);
int col = (c%SIZE);
JPanel p = new JPanel();
p.setBackground(Color.gray);
Border b = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
p.setBorder(b);
window.add(p);
}
holder.add(window, con);
con.gridx = 0;
con.gridy = SIZE+1;
con.gridheight = 0;
con.gridwidth = SIZE;
holder.add(pan, con);
holder.setVisible(true);
}
public static void main(String[] args){
Minesweeper start = new Minesweeper();
start.startGame();
}
}
這是正在顯示的內容:
'JPanel p = new JPanel();'你自己(和用戶)一個忙。做那個'JButton p = new JButton();'。我們可以將一個ActionListener添加到一個按鈕上,它會響應鼠標點擊和鍵盤操作。按鈕還支持圖標和/或文本(對空白瓷磚,清除瓷磚,地雷或周圍礦井的數量等有用)。 –
我實際上已經寫了一個使用jpanels的面板類。目標是掃雷遊戲,所以我需要能夠更多地操縱它們。 – acn3
*「所以我需要能夠操縱他們多一點。」*具體如何?我懷疑面板能做什麼,按鈕不能。 –