2017-10-16 26 views
0

크기를 조정하지 않으면 내 계산기 프로그램이 좋아 보인다. 그러면 모든 일이 터벅 터벅 걷습니다. 지금은 GridBagLayout을 사용하여 버튼을 구성하고 있습니다 (여러 버튼이있는 상황에서 GridBag를 사용하는 것이 가장 좋습니다). 시작시 버튼의 크기를 원하는대로 preferredSize를 설정합니다. 창 크기 조정시 버튼 크기를 변경하려면 어떻게해야합니까? 나는 응용 프로그램 작은 크기를 조정 한 후 발생하는 상황Java 프레임 폭을 기준으로 JComponent 크기를 조정하는 방법

enter image description here

. 내가 더 크게 만들면 모든 것이 그대로 유지되고 단추를 확대하는 대신에 공간을 만들기 위해 양쪽에 회색 공을 가져옵니다.

내 버튼 크기는 new Dimension(80, 55) 입니다. 그런 다음 preferredSize를 해당 크기로 설정하십시오. 메모리 버튼과 jlabels에 대해서는 총 버튼만큼 넓게 계산하는 수학을 계산합니다.

참고 사항 나는 스윙 라이브러리뿐만 아니라 자바도 배우고있다. 내가 선호하는 크기와 여전히 이동 END 업데이트를 설정할 때 END 참고

UPDATE 나는 최소 및 최대 크기를 설정하려

업데이트 2 내 메인 패널의 크기를 설정하는 시도 시작시 응용 프로그램의 크기에 맞게 그 작동하지 않았다 END UPDATE

편집 2 내 계층 구조는 다음과 같이이다 : 더 편안 때문에

FRAME 
    MAINPANEL - Contains all three panels 
     TOPPANEL - Contains the display 
     MIDDLEPANEL - Contains memory buttons 
     BOTTOMPANEL - Contains calculator buttons 

최종 편집 2 내가 오라클에서 TableLayout을 사용하는 것이 좋습니다

답변

0

, (당신이 그것을 다운로드 할 수 있습니다). 물론 GridBagLayout에서도 가능하지만, 특히 새로 만들 때 TableLayout은 훨씬 이해하기 쉽고 구성하기 쉽습니다.

Oracle TableLayout

double size[][] = 
     {{0.25, 0.25, 0.25, 0.25}, //Horizontal 
     {50, TableLayout.FILL, 40, 40, 40}}; //Vertical 

frame.setLayout (new TableLayout(size)); 

그것은 기본적으로 행과 열로 분리 된 그리드의

. 따라서 각 셀에는 ID가 있습니다 (예 : "0, 0"). 높이와 너비는 픽셀, 백분율 및 사용 가능한 공간을 사용하는 Layout.FILL로 조정할 수 있습니다. 여러 Layout.FILL을 사용하는 경우, 그 사이에 사용 가능한 공간이 분리됩니다.

버튼이나 다른 요소를 추가하려면 셀 좌표를 알아야합니다. 셀이 하나보다 큰 경우 끝 셀을 추가 할 수 있으므로 사용 가능한 전체 장소를 사용할 수 있습니다. 여기

// Add buttons 
    frame.add (button[0], "1, 1, 4, 1"); // Top 
    frame.add (button[1], "1, 4, 4, 4"); // Bottom 
    frame.add (button[2], "1, 3  "); // Left 
    frame.add (button[3], "4, 3  "); // Right 
    frame.add (button[4], "3, 3, c, c"); // Center 
    frame.add (button[5], "3, 3, 3, 4"); // Overlap 

몇 가지 유용한 링크 :

http://www.oracle.com/technetwork/java/tablelayout-141489.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Simple.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Preferred.html