2014-11-08 4 views
0

이름을 입력해야하는 프레임을 만들고 싶습니다. 나는 그것을 만들려고 노력한다. 이름 : 텍스트 필드, 다음 줄, 나이 : 텍스트 필드 등 ... 그러나 텍스트 필드는 정말로 높다. 프레임의 한 패널에 2 개의 텍스트 필드를 추가하면 하나의 텍스트 필드에 내 화면의 절반이 포함됩니다. 이 문제를 레이아웃 관리자와 함께 해결하려고하지만 어떻게 될지 잘 모릅니다.텍스트 필드의 자바 크기 변경

누군가 나를 도와 줄 수 있습니까?

BoxLayoutBorderLayout의 조합은 당신에 대해 작업하는
import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 

class GUI{ 
    public static void main(String [] args){ 
     GUI g = new GUI(); 
     g.Start(); 
    } 

    public void Start(){ 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
     frame.setSize(640, 640);    
     JPanel panel = new JPanel(); 
     JPanel west = new JPanel();   
     JLabel name = new JLabel("Name: "); 
     JLabel age = new JLabel("Age: ");   
     JTextField field1 = new JTextField(); 
     JTextField field2 = new JTextField();   
     west.setLayout(new BoxLayout(west, BoxLayout.Y_AXIS)); 
     west.add(name); 
     west.add(age);  
     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
     panel.add(field1); 
     panel.add(field2);   
     frame.getContentPane().add(BorderLayout.CENTER, panel); 
     frame.getContentPane().add(BorderLayout.WEST, west); 
     frame.setVisible(true); 
    } 
} 

답변

3

가 대신 GridBagLayout 같은 것을 사용하는 것이 좋습니다 :

여기 내 코드입니다.

은 자세한 내용은 당신이 작업하는 IDE

GridBagLayout

import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
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 LayoutTest { 

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

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

       JPanel form = new JPanel(new GridBagLayout()); 

       JLabel name = new JLabel("Name: "); 
     JLabel age = new JLabel("Age: "); 

     JTextField field1 = new JTextField(10); 
     JTextField field2 = new JTextField(3); 

       GridBagConstraints gbc = new GridBagConstraints(); 
       gbc.gridx = 0; 
       gbc.gridy = 0; 
       gbc.anchor = GridBagConstraints.WEST; 

       form.add(name, gbc); 
       gbc.gridy++; 
       form.add(age, gbc); 

       gbc.gridx++; 
       gbc.gridy = 0; 
       form.add(field1, gbc); 
       gbc.gridy++; 
       form.add(field2, gbc); 

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

} 
+0

오, 좋아'null' 레이아웃을 사용하여 당신에게 –

-1

확실하지에 대한 How to Use GridBagLayout에서보세요,하지만 난 이클립스, WindowBuilder Pro는 같은 것들에 많은 도움이 알고 이.

찾고있는 것은 setBounds (x, y, width, height)입니다. GUI의 객체에서 이것을 사용하십시오.

x, y는 우리가 작업하고있는 창에 상대적인 객체의 원점에 대한 좌표입니다. Origin도 창의 왼쪽 상단에 있으며 더 멀리 떨어져 있습니다. x/y 방향으로, 숫자가 증가합니다. 학교의 전형적인 그래프와 조금 다릅니다.

예를 들어 내 GUI 중 하나의 코드가 있습니다.

final TextField textField_1 = new TextField(); 
textField_1.setBounds(10, 231, 370, 22); 
panel.add(textField_1); 
+2

피 감사, 완벽한 픽셀 레이아웃은 현대적인 UI 설계 내 환상입니다. 구성 요소의 개별 크기에 영향을주는 요소가 너무 많습니다. 어느 요소도 제어 할 수없는 요소가 너무 많습니다. Swing은 핵심 레이아웃 관리자와 함께 작동하도록 설계되었으므로 레이아웃 관리자가이를 무시하면 문제를 해결하고 더 많은 시간을 수습하여 문제를 해결할 수 있습니다. [SWING에서 null 레이아웃을 사용하는 것에 대해 눈살을 찌푸리는 이유는 무엇입니까?] (http://stackoverflow.com/questions/6592468/why-is-it-frowned-upon-to-use-a-null- layout-in-swing) 자세한 내용은 – MadProgrammer

+0

그냥 눈살을 찌푸리게 될지도 모릅니다. 알만한 가치가 없다는 것을 의미하지는 않습니다. 또한 사전 제작 된 레이아웃을 사용하지 않고 위치 및 크기 조정을 동적으로 처리하는 코드를 작성할 수 있습니다. 오라클이이를 사용하는 사람을 원하지 않는다면, 더 이상 사용되지 않을 것입니다. – Kristoff

+1

그래서 레이아웃 관리자를 사용하는 대신 레이아웃 관리자를 작성하는 것이 좋습니다. 15 년의 전문성 개발 과정에서 널 레이아웃 관리자를 사용해야하는 상황을 발견하지 못했습니다. 심지어 내 자신의 레이아웃 관리자 한 명 또는 두 명이 서면으로 작성되었습니다. – MadProgrammer

관련 문제