如何使用布局创建不增加大小的文本字段?

问题描述 投票:0回答:1

我必须使用 Javas GUI 创建邮件布局...我已经成功创建了一个布局,其中文本字段的大小水平增加,这是一个要求,并且我使用框布局的 Y_Axis 垂直堆叠它们。但当我垂直调整大小时,它们的尺寸也会增加,但我不希望这样。

import javax.swing.*;
import java.awt.*;

public class MailLayout {

public static void main(String\[\] args) {
String title = "New Message";
MyWindow       myWindow = new MyWindow(title);
myWindow.setVisible(true);

}

}

class MyWindow extends JFrame {

//private static final int WIDTH = 500, HEIGHT = 400;

private JPanel myPanel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel myPanel2 = new JPanel();
private JPanel myPanel21 = new JPanel();
private JPanel myPanel3= new JPanel();
private JPanel myPanel31= new JPanel();


private JLabel label1 = new JLabel("To:");
private JLabel label2 = new JLabel("Cc:");
private JLabel label3 = new JLabel("Bcc:");
private JLabel label4 = new JLabel("Subject:");
private JLabel label5 = new JLabel("From:");
private JButton button = new JButton("Send");

private JTextField textfield1 = new JTextField("");
private JTextField textfield2 = new JTextField("");
private JTextField textfield3 = new JTextField("");
private JTextField textfield4 = new JTextField("");


public MyWindow(String title) {

    super(title);
    
    myPanel1.add(button);
    this.add(myPanel1,BorderLayout.NORTH);
    //myPanel1.setBorder(BorderFactory.createLineBorder(Color.black));

    myPanel21.setLayout(new BoxLayout(myPanel21, BoxLayout.Y_AXIS));
     //label1.setBorder(BorderFactory.createLineBorder(Color.black));
    myPanel21.add(label1);
    

    //label2.setBorder(BorderFactory.createLineBorder(Color.black));
    myPanel21.add(label2);

    //label3.setBorder(BorderFactory.createLineBorder(Color.black));
    myPanel21.add(label3);

    //label4.setBorder(BorderFactory.createLineBorder(Color.black));
    myPanel21.add(label4);

   // label5.setBorder(BorderFactory.createLineBorder(Color.black));
    myPanel21.add(label5);
    myPanel2.add(myPanel21);

    this.add(myPanel2,BorderLayout.WEST);


    myPanel3.setLayout(new BoxLayout(myPanel3, BoxLayout.Y_AXIS));
    myPanel3.add(textfield1);
    myPanel3.add(textfield2);
    myPanel3.add(textfield3);
    myPanel3.add(textfield4);

    this.add(myPanel3);
  
    this.setSize(500,400);
    this.setLocationRelativeTo(null);
    // Tell jvm to kill program when window closes.
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
java swing
1个回答
0
投票

GridBagLayout
是您使用 Swing 时最好的朋友。 这个解释对我学习如何使用它有很大帮助。您还可以查看 Oracle 教程

© www.soinside.com 2019 - 2024. All rights reserved.