2013-02-21 2 views
1

나는이 GUI에 많은 문제가있다. 왼쪽에는 panel1, 오른쪽에는 panel2가있는 애플릿이 있습니다. 여기에 내 두 가지 문제가 있습니다 : 1) JTextArea는 애플릿의 전체 오른쪽을 차지할 필요가 있지만 그렇게 할 수는 없습니다. 2) JTextArea를 길게 만들 때마다 JTextField는 전체 패널이 다르더라도 길어집니다. 무슨 일이야? 애플릿과 모든 것은 다른 클래스에서 만들어집니다. 컴파일되고 잘 실행됩니다. 나는이 부분을 일하게 할 수 없다.JTextArea의 크기를 변경할 때 JTextField의 크기가 조정되는 이유는 무엇입니까?

private JButton button1; 

    private JLabel label1; 
private JTextField field1; 
private JPanel panel1; 
private JPanel panel2; 
private JPanel panel3; 
private JTextArea area1; 
int i = 0; 
int j = 0; 
private JScrollPane pane; 


public Class() 
{ 


this.petList = petList; 
this.sPanel = sPanel; 

panel1 = new JPanel(); 
panel1.setLayout(new BorderLayout()); 
button1 = new JButton("Test"); 
panel1.add(button1,BorderLayout.SOUTH); 
field1 = new JTextField(); 
panel1.add(field1, BorderLayout.EAST); 
label1 = new JLabel("Test"); 
panel1.add(label1, BorderLayout.WEST); 

panel2 = new JPanel(); 
area1 = new JTextArea(10, 20); 
panel2.add(area1); 

panel3 = new JPanel(); 
panel3.setLayout(new BorderLayout(5,5)); 
panel3.add(panel1, BorderLayout.WEST); 
panel3.add(panel2, BorderLayout.EAST); 

this.add(panel3); 
+0

의 성격이 그래서 더 나은 선택이 될 것입니다? 나는 또한 작동하지 않는 boxlayout을 시도했다. 나는 borderlayout 만 사용한다고 가정 된 것과 똑같이 작동하도록하는 사람을 안다. – user2067506

+2

GridBagLayout을 사용하는 것이 더 좋을 것입니다. – Nikhil

답변

5

복합 레이아웃을 사용하면 여러 구성 요소를 더 쉽게 레이아웃 할 수 있지만 레이아웃 관리자를 선택하는 것은 쉽지 않습니다.

BorderLayout의 성격은 사용 가능한 모든 공간을 사용하여 구성 요소를 레이아웃하는 것입니다.

것은 GridBagLayout 대신

같은 것을 사용해보십시오

enter image description here

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

public class BadLayout12 { 

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

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

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

    public class TestPane extends JPanel { 

     private JButton button1; 
     private JLabel label1; 
     private JTextField field1; 
     private JPanel panel1; 
     private JPanel panel2; 
     private JPanel panel3; 
     private JTextArea area1; 
     int i = 0; 
     int j = 0; 
     private JScrollPane pane; 

     public TestPane() { 

//   this.petList = petList; 
//   this.sPanel = sPanel; 

      button1 = new JButton("Test"); 
      field1 = new JTextField(10); 
      label1 = new JLabel("Test"); 

      panel1 = new JPanel(new GridBagLayout()); 
      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.gridx = 0; 
      gbc.gridy = 0; 
      panel1.add(label1, gbc); 
      gbc.gridx++; 
      panel1.add(field1, gbc); 
      gbc.gridx = 0; 
      gbc.gridy++; 
      gbc.gridwidth = 2; 
      panel1.add(button1, gbc); 

      panel2 = new JPanel(); 
      area1 = new JTextArea(10, 20); 
      panel2.add(new JScrollPane(area1)); 

      panel3 = new JPanel(); 
      panel3.setLayout(new BorderLayout(5, 5)); 
      panel3.add(panel1, BorderLayout.WEST); 
      panel3.add(panel2, BorderLayout.EAST); 

      this.add(panel3); 
     } 
    } 
} 

를 살펴 보자; 자세한 내용

관련 문제