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
* "그래서 좀 더 조작 할 수 있어야합니다."* 어떻게, 구체적으로? 나는 패널이 할 수있는 일이 없다는 것을 의심한다. –