有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java网格包布局的swing辅助?

我试着将它设置为“输入你的名字”JLabel显示在JTextField左侧的右边,遗憾的是它显示在中间。我说的是第一个JLabel和第一个JTextArea,请忽略其余代码

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

public class practice extends JFrame  {

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

    public practice(){
        JPanel jp = new JPanel();

        jp.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();

        jp.add(new JLabel(""),gbc);

        gbc.gridx=0;
        gbc.gridy=1;
        jp.add(new JLabel("Enter your name\n"),gbc);

        gbc.gridx=0;
        gbc.gridy=0;
        jp.add(new JLabel(" "),gbc);

        gbc.gridx=0;
        gbc.gridy=0;
        jp.add(new JLabel(" "),gbc);

        gbc.insets = new Insets(30,0,0,0);
        gbc.gridx=0;
        gbc.gridy=1;
        jp.add(new JTextArea(3,30),gbc);

        gbc.insets = new Insets(10,0,0,0);
        gbc.gridx=0;
        gbc.gridy=2;
        jp.add(new JTextArea(3,10),gbc);

        gbc.insets = new Insets(10,0,0,0);
        gbc.gridx=0;
        gbc.gridy=3;
        jp.add(new JTextArea(3,10),gbc);

        gbc.gridx=0;
        gbc.gridy=0;
        jp.add(new JRadioButton(""),gbc);

        gbc.gridx=0;
        gbc.gridy=0;
        jp.add(new JRadioButton (""),gbc);

        gbc.gridx=0;
        gbc.gridy=0;
        jp.add(new JRadioButton(""),gbc);

        this.add(jp);
        setTitle("Card");
        setSize(700,500);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
}

共 (1) 个答案

  1. # 1 楼答案

    如果你想把它放在另一个旁边,你应该尝试这样做:

    gbc.gridx = 0;
    gbc.gridy = 0; 
    Container.add(//Your Label);
    
    gbc.gridx = 1;
    gbc.gridy = 0;
    Container.add(//Your TextField);
    

    还可以阅读关于锚的内容,因为我没有看到你使用它们,你可以使用:

    gbc.anchor = GridBagConstraints.LINE_START;
    

    用于显示从直线开始而非从中心开始的对象

    最后,我建议您创建一种向窗口添加对象的方法,以避免大量代码。 我举了一个很好的DEITEL的例子:

    import java.awt.
    
    
    public Yourclass{
    
    JPanel Container;
    GridBagLayout yourlayout;
    GridBagConstraints gbc;
    
    //Initialize them in the constructor.. Ex: Container = new JPanel();
    }
    
    
    private void addobjects(Component object, int gridx, int gridy, int width, int heigth){
    
    gbc.gridx = gridx;
    gbc.gridy = gridy;
    
    gbc.gridwith = width;
    gbc.gridheight = height;
    
    yourlayout.setConstraints(object, gbc);
    Container.add(object);
    
    }
    

    所以现在你只需要这样做:

    addobjects(YourJLabel, 0, 0, 1, 1);
    addobjects(YourTextField, 1, 0, 1, 1);
    

    请确保为widt和height指定一个值,因为如果没有,构造函数现在将不知道在哪里添加对象。 还要确保在构造函数所在的同一个类中声明方法

    如果我有一些语法错误,对不起,但我很自豪有一个Nopal在我的前面。贾贾贾

    我希望这个答案能对你有所帮助