2012-10-19 6 views
3

저는 Swing을 사용하여 Java로 기본 UI를 디자인해야했지만 아직 레이아웃을 고수하고 있습니다. this과 비슷한 것을 만들고 싶지만 GridBagLayout을 사용하여 내 시도는 매우 혼란 스럽습니다. 누구든지 내 GUI를 이렇게 배치 할 수있는 방법에 대한 몇 가지 팁을 제공 할 수 있습니까?Java GridBagLayout

두 개의 탭을 추가하는 JTabbedPane이 있고 두 개의 탭 각각에 내 컨트롤이 포함 된 JPanel이 추가됩니다. How I want to lay it out

+0

http://madbean.com/anim/totallygridbag/ – irreputable

+0

이미지 –

답변

4

내가 추천하는

  • 전체 GUI 사용의 BorderLayout,
  • JTable가이 JScrollPane의이어야하며이 BorderLayout.CENTER을 배치해야합니다.
  • 레이블, 필드 및 단추가있는 위쪽 JPanel은 BorderLayout.PAGE_START에 배치해야합니다.
  • 위쪽 JPanel도 BorderLayout을 사용할 수 있으며 BorderLayout.PAGE_END 위치에 단추를 저장할 수 있습니다.
  • 버튼은 GridLayout과 의해 유지된다 (1, 0, X, 0) x는
  • 라벨 및 JTextFields가 GridBagLayout에 사용하는 JPanel에있을 버튼 사이의 간격이고, 그가 상단에 위치 인 JPanel를 사용 BorderLayout.CENTER 위치의 JPanel.
  • 이러한 권장 사항을 맹목적으로 따르지 않고 각각 고유 한 레이아웃을 사용하여 중첩 된 JPanel의 다양한 조합을 실험하고 재생 해보십시오.
  • 당신은 또한 this link 여기
3

내가 추천 할 것입니다 무엇을 확인한다 :

  • 사용 GridLayout과 가진 JPanel pTextBox (3, 2) 라벨 + 텍스트 상자
  • 사용 A의 모든 잡아 JPanel pButtons은 GridLayout (1,3) 또는 BoxLayout (가로)을 사용하여 모든 버튼을 유지합니다.
  • JPanel pAll에 BoxLayout (세로)을 사용하여 pTextBox, pButtons와 표.
  • 간격/크기 조정 동작을 조정하려면 스트럿, 글루 및 최소/최대/사전 크기를 사용하십시오.

더 알아보기 : http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html 당신이 찾고있는 것을 정확하게 비교해보십시오.

2

윈도우의 사용 가능한 공간을 모두 차지하려는 JTable 구성 요소가 있습니다. 즉, BorderLayout가 필요합니다. BorderLayout의 BorderLayout.CENTER에 JTable를 포함한 JScrollPane를 지정합니다. 다른 구성 요소는 BorderLayout의 다른 JPanel 내부에 있습니다. PAGE_START

이 새로운 JPanel에서는 수직으로 크기를 조정해야하는 구성 요소가 없으므로 BorderLayout이 필요하지 않습니다. 나는 수직 BoxLayout으로 구성 할 것이다. 이 패널에 레이블과 텍스트 필드에 대해 두 개의 GridBagLayout을 추가하고 버튼에 대해 하나의 FlowLayout 아래에 가운데 맞춤과 일부 수평 간격을 삽입합니다. FlowLayout을 사용하여 메인 패널의 크기를 조절하면 단추가 같은 거리를 유지하기 때문에 버튼에 대한 GridLayout의 insetad를 선호합니다.

0

여기에 몇 가지 코드가 있습니다.JTextFields를 제대로 표시 할 수 없으므로이를 수정해야합니다.

홈페이지 :

import javax.swing.SwingUtilities; 

public class Main { 

    public static void main(String [] args) { 

     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 

       Panel panel = new Panel(); 
      } 

     }); 

    } 

} 

패널 :

import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTable; 
import javax.swing.JTextField; 

public class Panel extends JPanel{ 

    private JFrame frame; 

    private JLabel label1; 
    private JLabel label2; 
    private JLabel label3; 

    private JTextField textField1; 
    private JTextField textField2; 
    private JTextField textField3; 

    private JButton button1; 
    private JButton button2; 
    private JButton button3; 

    private JTable table; 


    public Panel() { 

     label1 = new JLabel("label1"); 
     label2 = new JLabel("label2"); 
     label3 = new JLabel("label3"); 

     textField1 = new JTextField("textField1", 20); 
     textField2 = new JTextField("textField2", 20); 
     textField3 = new JTextField("textField3", 100); 

     button1 = new JButton("Hello"); 
     button2 = new JButton("Goodbye"); 
     button3 = new JButton("Love"); 

     table = new JTable(20,20); 

     frame = new JFrame("My application"); 
     frame.setSize(1000, 1000); 
     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
     this.setOpaque(true); 

     setLayout(new GridBagLayout()); 

     GridBagConstraints gc = new GridBagConstraints(); 

     gc.weightx = 1; 
     gc.weighty =1; 
     gc.fill = GridBagConstraints.NONE; 

     gc.gridx = 0; 
     gc.gridy = 0; 
    // gc.anchor = GridBagConstraints.WEST; 
     add(label1, gc); 

     gc.gridx = 2; 
     gc.gridy = 0; 
     //gc.anchor = GridBagConstraints.EAST; 
     add(textField1, gc); 

     gc.gridx = 0; 
     gc.gridy = 1; 

     //gc.anchor = GridBagConstraints.WEST; 
     add(label2, gc); 

     gc.gridx = 2; 
     gc.gridy = 1; 
     //gc.anchor = GridBagConstraints.EAST; 
     add(textField2, gc); 

     gc.gridx = 0; 
     gc.gridy = 2; 
     //gc.anchor = GridBagConstraints.WEST; 
     add(label3, gc); 

     gc.gridx = 2; 
     gc.gridy = 2; 
     //gc.anchor = GridBagConstraints.EAST; 
     add(textField3, gc); 

     gc.gridx = 0; 
     gc.gridy = 3; 
     //gc.anchor = GridBagConstraints.WEST; 
     add(button1, gc); 

     gc.gridx = 1; 
     gc.gridy = 3; 
     gc.anchor = GridBagConstraints.CENTER; 
     add(button2, gc); 

     gc.gridx = 2; 
     gc.gridy = 3; 
    // gc.anchor = GridBagConstraints.EAST; 
     add(button3, gc); 

     gc.gridx = 1; 
     gc.gridy = 4; 
     gc.anchor = GridBagConstraints.CENTER; 
     add(table, gc); 

     frame.add(this); 
    } 

} 
+1

오년 후 추가 ... –

관련 문제