2014-04-12 3 views
0

모든 JLabel을 패널의 왼쪽에 정렬하려고합니다. 다음은 내 코드이지만 제대로 작동하지 않는다면 그 이유를 모른다. JFrame frame1 = 새 JFrame ("승객 등록"); frame1.setVisible (true); frame1.setSize (550, 200);JLabel을 패널의 왼쪽에 정렬하는 방법

 JPanel panel = new JPanel(); 
     frame1.add(panel); 

     JLabel label1 = new JLabel("Name",SwingConstants.LEFT);  
     JLabel label2 = new JLabel("Activities",SwingConstants.LEFT); 

     JButton jbtReg = new JButton("Register"); 
     panel.add(label1); 
     panel.add(text1); 
     panel.add(label2); 
     panel.add(text2); 
     panel.add(jbtReg); 

답변

1

귀하의 예제를 바탕으로, 당신은

JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 

를 사용할 수 있습니다하지만이 왼쪽에있는 귀하의 모든 구성 요소를 정렬됩니다.

다른 레이아웃 관리자 또는 레이아웃 관리자 조합을 사용할 수도 있습니다.

는 더 많은 아이디어

업데이트

에 대한 A Visual Guide to Layout Managers에서 봐 대신를 사용하려고 고려, 당신에게 선택의 여지를주지 않는 (JPanel의 기본 레이아웃 매니저)

FlowLayout 다른 레이아웃 매니저 또는 예컨대 레이아웃 관리자의 조합 ...

Layout

import java.awt.EventQueue; 
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.JTextField; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class LayoutExample { 

    public static void main(String[] args) { 
     new LayoutExample(); 
    } 

    public LayoutExample() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     public TestPane() { 
      setLayout(new GridBagLayout()); 
      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.anchor = GridBagConstraints.WEST; 
      gbc.fill = GridBagConstraints.HORIZONTAL; 

      gbc.gridx = 0; 
      gbc.gridy = 0; 

      add(new JLabel("Name:"), gbc); 
      gbc.gridy++; 
      add(new JLabel("Activity:"), gbc); 

      gbc.gridx++; 
      gbc.gridy = 0; 
      gbc.fill = GridBagConstraints.NONE; 

      add(new JTextField(10), gbc); 
      gbc.gridy++; 
      add(new JTextField(20), gbc); 

      gbc.gridx = 0; 
      gbc.gridy++; 
      gbc.anchor = GridBagConstraints.CENTER; 
      gbc.gridwidth = 2; 

      add(new JButton("Register"), gbc); 

     } 

    } 

} 
+0

나는 당신의 코드를 시험해 보았지만, 여전히 어떤 것도 바꾸지 않았다. 레이아웃은 다음과 같습니다 : 이름 활동 패널의 왼쪽으로 이동 한 활동이 없습니다. – Sophie

+0

패널이 패널의 기본 크기를 사용하는 패널 내에 배치되었으므로 아무런 변화가 없습니다. – MadProgrammer

+0

하지만 어떻게 만들 수 있습니까? 변화? 고마워요! – Sophie

관련 문제