Java Swing 라이브러리를 사용하여 GUI를 개발 중입니다. GridPlayout을 레이아웃으로 사용하는 Jpanel에 일부 JButton을 추가하려고하는데 문제가 있습니다. 패널의 크기는 모니터의 전체 크기에 대한 것이지만 JButton의 크기가 다를 수 있습니다. 패널에 10 * 10 배열을 추가 할 수 있지만 패널에 3 * 3 배열의 Jbutton을 추가 할 수 있습니다. 내가 3 * 3을 추가하면 jbutton은 현재 JPanel (옵션 이름 인)의 맨 위에있는 JPanel조차도 전체 디스플레이를 차지할만큼 커야 만합니다. 상수를 설정하려면 어떻게해야합니까? 크기가 2 Jbutton (현재 전체 디스플레이를 사용함)인데도 크기가 변경되지 않도록 JButtons의 크기 (setSize 함수는 작동하지 않으며 레이아웃이 GridLayout이 아닌 null이되기를 원합니다.) 코드의 일부분은 다음과 같습니다 :레이아웃이 "GridLayout"인 JPanel에 JButton을 추가
public class Edit extends JFrame{
public Edit()
{
width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
newer = new JButton(new ImageIcon(b)) ;
done = new JButton(new ImageIcon(f)) ;
savior = new JButton(new ImageIcon(d)) ;
undo = new JButton(new ImageIcon(h)) ;
newer.setSize(200, 60);
done.setSize(200, 60);
savior.setSize(200, 60);
undo.setSize(200, 60);
options = new JPanel();
options.setSize(width , 100);
options.setLayout(new GridLayout(1,5,(width- 1000)/6,20)) ;
options.add(newer);
options.add(done);
options.add(savior);
options.add(undo);
options.setBackground(Color.magenta);
options.add(selector);
this.setExtendedState(this.MAXIMIZED_BOTH);
this.setUndecorated(true);
this.setVisible(true);
view = new JPanel();
regions = new JButton[3][3];
view.setSize(width, height - 100) ;
view.setLayout(new GridLayout(3,3));
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
regions[i][j] = new JButton();
regions[i][j].setSize(80,80) ;
view.add(regions[i][j]);
}
editPhase = new JPanel();
editPhase.setLayout(null);
editPhase.add(options,BorderLayout.NORTH);
editPhase.add(view,BorderLayout.SOUTH);
this.add(editPhase);
}
}
미리 감사드립니다.
먼저 호출해야한다'setPreferredSize (...)'이 아닌'에는 setSize (...)'. 두 번째로, 각 버튼을 패널에 배치하고 기본 크기를 설정 한 다음 지정된 영역에 추가 할 수 있습니다. 따라서'JButton'이 아니라'JPanel' 만 크기가 조정됩니까? – mre
더 강력하고 유용한 레이아웃을 사용하지 않는 이유는 무엇입니까? (나는 JGoodies를 선호합니다. 많은 사람들이 마이그레이션 레이아웃 또는 테이블 레이아웃을 권장합니다)? –