JFrame 내부의 JPANEL에 대한 영구 크기를 설정할 수 있습니까?
-
11-07-2019 - |
문제
내 현재 문제는 2x2 gridlayout이있는 JFrame이 있다는 것입니다. 그리고 사각형 중 하나 안에는 그리드를 표시하는 jpanel이 있습니다. 나는 Java Swing Library와 함께 현장 하루를 보내고 있습니다 ...
Java는 화면에 맞게 각 Jlabel을 자동으로 확장합니다. 나는 그것이 푸른 사각형 (물)과 검은 테두리가되고 그 회색 공간이 아니라는 것을 원합니다. 회색 공간이 사라지도록 정확한 치수를 얻기 전에 JFrame의 크기를 백만 번 변경할 필요가 없도록 JPANEL의 크기를 영구적으로 설정할 수있는 방법이 있습니까?
나는 또한 그 버튼의 크기를 너무 크지 않도록 설정하고 싶습니다 (BorderLayout
버튼과 텍스트 필드에 사용되고 있습니다)
해결책
두 체커 보드가 같은 크기를 유지하려면 각각 자체로 포함되어 있어야합니다. JPanel
. 해당 부모 jpanel 각각을 레이아웃 유형의 GridBagLayout
. 각 체커 보드 구성 요소의 선호도를 설정 한 다음 해당 컨테이너에 추가하십시오. Gridbaglayout은 기본적으로 각 보드를 부모 jpanel의 중앙에 배치해야합니다. 따라서 창이 크기가 커지면 JPANEL 상위 영역이 커지거나 작아 지지만 내부의 바둑판 구성 요소는 동일한 크기로 유지됩니다.
또는 각 체크 보드 정사각형이 JPanel
a BorderLayout
레이아웃 관리자 및 추가 JLabel
(파란색 배경색) BorderLayout.CENTER
위치.
버튼은 다음과 같은 것을 시도하십시오.
JPanel theButtonPanel = new JPanel(new BorderLayout());
JButton button1 = new JButton("Fire");
JButton button2 = new JButton("Pass");
JButton button3 = new JButton("Forfiet");
JPanel innerButtonContainer = new JPanel(new Grid(1, 3, 8, 8));
innerButtonContainer.add(button1);
innerButtonContainer.add(button2);
innerButtonContainer.add(button3);
theButtonPanel.add(innterButtonContainer);
마지막으로 스윙 사용자 인터페이스에 디자인 도구를 사용하는 것을 고려하십시오. NetBeans는 있습니다 우수한 UI 디자이너가 내장되었습니다. NetBeans를 다운로드하십시오 여기.
다른 팁
Gridbaglayout 당신이 정말로 사용하고 싶은 것입니다. GridLayout은 레이아웃의 각 구성 요소에 대해 동일한 크기를 강제로 강제로 강제로 제한을 제한합니다. Gridbaglayout은 훨씬 더 강력하고 훨씬 더 복잡합니다. 공부하십시오 API 페이지 그것을 위해. 사용 GridBagLayout
, 구성 요소는 원하지 않는 경우 전체 그리드 공간을 채우지 않고 심지어 요구하는 크기를 유지할 수도 있습니다. 구성 요소의 크기가 변경되는 것을 막기 위해 사용 가능한 세 가지 크기 제약 조건을 모두 설정했습니다.
water.setPreferredSize(new Dimension(20, 20));
water.setMinimumSize(new Dimension(20, 20));
water.setMaximumSize(new Dimension(20, 20));
당신의 버튼의 경우, 나는 확실히 내부 패널을 다음과 같이 사용합니다. 브라이언 언급. 모든 버튼이 같은 크기가되기를 원하지 않는 경우 그가 제안한 것처럼 GridLayout 또는 FlowLayout을 사용할 수 있습니다. 메인 버튼 대신 내부 패널에 모든 버튼을 추가하십시오.
가능하다면 setResizeable( false )
최상위 프레임에서 레이아웃 관리자를 SetBounds를 통해 각 위치 및 크기로 NULL 및 하드 코드로 설정할 수 있습니다. 이것이 내가하는 방법입니다 (물론 크기 조정에 따라).
나는 이와 같은 문제를 해결하는 데 성공했습니다 TableLayout
이것은 제 3 자 레이아웃 관리자입니다. 다운로드하고 튜토리얼을 읽어야하지만 열쇠는 레이아웃의 위치에 jbuttons를 추가 할 때 정당화를 중심으로 설정하는 것입니다.