Java 使用 GridLayout 创建一种表单?

Java creating a type of form with GridLayout?

我正在尝试制作毕达哥拉斯定理计算器。现在,我正在尝试使用 GridLayout 制作表格。您输入 A、B 或 C 侧的值,然后选中缺失一侧的单选按钮。但是,我的 JTextField 太大了,我希望它与标签水平。我不想使用任何其他布局管理器。

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

public class TriangleCalculator extends JFrame{

    private JLabel sideALabel, sideBLabel, sideCLabel, triangleImage;
    private JTextField sideAInput,sideBInput, sideCInput;
    private JRadioButton sideAOption, sideBOption, sideCOption;
    private JButton calculateButton, clearButton;
    private JPanel buttonPane, mainPanel;

    public TriangleCalculator(){
        super("TriangleCalculator");
        addComponents();
        setSize(500, 500);
        setVisible(true);

    }

    public void addComponents()
    {
        sideALabel = new JLabel("Enter the value of side A: ");
        sideBLabel = new JLabel("Enter the value of side B: ");
        sideCLabel = new JLabel("Enter the value of side C: ");

        sideAInput = new JTextField();
        sideBInput = new JTextField();
        sideCInput = new JTextField();

        sideAOption = new JRadioButton();
        sideBOption = new JRadioButton();
        sideCOption = new JRadioButton();

        calculateButton = new JButton("Calculate");
        clearButton = new JButton("Clear");

        buttonPane = new JPanel(new GridLayout(0, 2));
        mainPanel = new JPanel(new GridLayout(0, 3));
        add(buttonPane, BorderLayout.SOUTH);
        add(mainPanel, BorderLayout.CENTER);

        mainPanel.add(sideALabel);
        mainPanel.add(sideAInput);
        /*mainPanel.add(sideAOption);*/

        buttonPane.add(clearButton);
        buttonPane.add(calculateButton);
    }
}

I do not want to use any other lyout manager.

这不是布局管理的工作方式。每个布局管理器都有其规则。如果一个布局管理器不能满足您的要求,那么您需要使用不同的布局管理器或包含不同布局管理器的嵌套面板来实现您的效果。

您可以使用 GridBagLayout。它将支持不同大小的列。但是,当您创建文本字段时,您需要使用:

sideAInput = new JTextField(10);

因此布局管理器知道创建多大的文本字段。

阅读有关 How to Use GridBagLayout 的 Swing 教程部分,了解更多信息和工作示例。