java - GridBagLayout 不显示 JTextArea,并在中心显示面板

标签 java swing layout gridbaglayout

在下面的代码中,当我将 JTextArea 添加到主面板时,它没有显示。当我添加 controlPanel 时,它显示在中心,而不是边缘。我是 GridBagLayout 的新手,所以我假设我遗漏了一些简单的东西。

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextArea;

public class Main {

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

    public Main() {
        JFrame frame = new JFrame();

        JPanel mainPanel = new JPanel();
        JPanel controlPanel = new JPanel();

        mainPanel.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();

        controlPanel.add(new JButton("Play"));
        controlPanel.add(new JButton("Pause"));
        controlPanel.add(new JSpinner());
        JTextArea textArea = new JTextArea();

        c.gridx = 0;
        c.gridy = 0;
        c.gridheight = 3;
        c.gridwidth = 3;
        mainPanel.add(textArea, c);
        // mainPanel.add(controlPanel, c);
        frame.add(mainPanel);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(700, 700);
        frame.setLocation(250, 100);
        frame.setVisible(true);
    }
}

编辑: 这就是约束处理您的建议的方式。 textArea 仍然没有显示。

        c.gridx = 0;
        c.gridy = 0;
//      c.gridheight = 3;
//      c.gridwidth = 3;
        c.weightx = 1.0;
        c.weighty = 1.0;
        c.anchor = GridBagConstraints.NORTHWEST;
        mainPanel.add(textArea, c);
        // mainPanel.add(controlPanel, c);
        frame.add(mainPanel);

最佳答案

不要忘记权重 anchor :

    c.weightx = 1.0;
    c.weighty = 1.0;
    c.anchor = GridBagConstraints.NORTHWEST;

编辑:
向 JTextArea 添加行值和列值的示例:

    controlPanel.add(new JButton("Play"));
    controlPanel.add(new JButton("Pause"));
    controlPanel.add(new JSpinner());

    JTextArea textArea = new JTextArea(20, 40);

    c.gridx = 0;
    c.gridy = 0;
    c.gridheight = 3;
    c.gridwidth = 3;
    c.weightx = 1.0;
    c.weighty = 1.0;
    c.anchor = GridBagConstraints.NORTHWEST;
    mainPanel.add(new JScrollPane(textArea), c);

关于java - GridBagLayout 不显示 JTextArea,并在中心显示面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811084/

相关文章:

安卓(测量规范): When Is it possible to get both height and width as "MeasureSpec.UNSPECIFIED"

css - 从整个文档控制内部容器滚动

java - 使用 Azure Java SDK V12 和 ListBlobs() 列出 Azure Blobstorage 中的 Blob 速度非常慢

java - 尝试验证传递给方法的值

java - 如何在运行时将组件添加到 JPanel

java - 单选按钮不显示选定状态

java - 如何根据窗口调整 jlabel 的大小

Java:如何读取字体文件的属性?

java - Sonar : Array should contain trailing comma

android - 操作栏不与 ListView 一起出现