2010-11-22 7 views
6

세 개의 JPanel이 JFrame에 그려져 있습니다. 이것들은 현재 모두 기본 FlowLayout을 사용하도록 설정되어 있습니다. 나는 이것들이 하나의 열에 다른 하나 위에 존재하기를 바랍니다.자바 스윙 : FlowLayout JPanels가 서로 옆에 앉아 있습니까?

그러나 나는 이들이 동일한 라인에서 서로 옆에 떠있는 것을 알고 있습니다.

FlowLayout JPanel의 자연적인 너비는 내용의 합계입니까? 그렇다면 영역의 너비를 JFrame의 너비로 강제 설정할 수있는 방법이 있습니까?

흥미롭게도, "상단"및 "하단"패널의 내용이 JFrame의 전체 너비에 걸쳐 있고 "중간"패널이 비어 있다면 "중간"패널이 둘 사이에 공간을 많이
HTML의
.

감사합니다,

답변

1

당신은 구성 요소에 YxZ 그리드를 만들 GridLayout를 사용할 수 있습니다. 레이아웃을 더 정확하게 사용할 수있는 구성하기 "이전과 같은 GridBagLayout은 po의 모든 권한을 제공합니다. 중첩 된 구성 요소의 크기 조정 및 크기 조정

0

나는 항상 NetBeans으로갑니다. 이후 JPanel 또는 JFrame에 컴포넌트를 배치하는 데 문제가없는 Free Design을 만들 수 있습니다. 고려해 볼 수 있습니다.

2

세로 레이아웃을 만들려면 둘러싼 컨테이너에 BoxLayout을 사용하는 것이 좋습니다. y 축을 따라 배치 구성 요소로 설정할 수 있습니다.

4

Jim이 설명한 것처럼 구성 요소를 선형으로 정렬해야하는 경우 BoxLayout이 올바른 선택입니다. 당신은 정말 LayoutManagers의 기본 세트를 이해하기 위해 introduction to layout managers 읽어에 잘 할 것

import javax.swing.BorderFactory; 
import javax.swing.BoxLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

/** 
* 
* @author nicholasdunn 
*/ 
public class BoxLayoutExample extends JPanel { 

    public BoxLayoutExample() { 
     JPanel topPanel = new JPanel(); 
     JPanel middlePanel = new JPanel(); 
     JPanel bottomPanel = new JPanel(); 

     topPanel.setBorder(BorderFactory.createEtchedBorder()); 
     middlePanel.setBorder(BorderFactory.createEtchedBorder()); 
     bottomPanel.setBorder(BorderFactory.createEtchedBorder()); 

     topPanel.add(new JLabel("Top")); 
     middlePanel.add(new JLabel("Middle")); 
     bottomPanel.add(new JLabel("Bottom")); 

     BoxLayout boxLayout = new BoxLayout(this, BoxLayout.PAGE_AXIS); 
     setLayout(boxLayout); 
     add(topPanel); 
     add(middlePanel); 
     add(bottomPanel); 

    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(""); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new BoxLayoutExample(); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

alt text

: 여기

은 예입니다. 복잡한 레이아웃을 할 시간이되면, GridBagLayout을 배우는 대신 MigLayout을 사용하십시오. 감사합니다.