GridBagLayoutを使用して、グリッドレイアウトを持つJPanelと大きいボタンだけのJPanelを含むJFrameを作成しようとしています。私は行をすべて同じサイズにし、JButtonを持つJPanelを1行と同じサイズにします。ただし、現在空のボタンパネルは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();
}
}
これは何を示しているです:あなたは8のgridy値を指定することはできません
'JPanel p = new JPanel();'自分自身(そしてユーザー)に好意を与えます。 'JButton p = new JButton();'にします。 'ActionListener'をボタンに追加すると、マウスのクリックとキーボード操作の両方に反応します。ボタンはアイコンやテキストもサポートしています(空白のタイル、クリアされたタイル、鉱山、周囲の鉱山の数などに便利です)。 –
実際にjpanelsを使用するパネルクラスを作成しました。目標は掃海砲のゲームなので、もう少し操作できるようにする必要があります。 – acn3
*「私はもう少し操作できるようにする必要があります」*具体的にはどうですか?私は、パネルができることは何か、ボタンはできないことは疑う。 –