Java Swing:JTextArea 填充整个分配的空间

import javax.swing.*;

import javax.swing.border.EtchedBorder;

import java.awt.*;


import static java.awt.GridBagConstraints.BOTH;


public class mwe extends JFrame {


    private JPanel x, y, z, u,v,w,jtext;


    private class MyBorderedPanel extends JPanel {

        MyBorderedPanel( String title ) {

            this.setBorder(BorderFactory.createTitledBorder(

                    BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), title

            ));

        }

    }


    private class MyTextPanel extends JPanel {

        JTextArea textArea;

        MyTextPanel( String title ) {

            textArea= new JTextArea();

            this.setBorder(BorderFactory.createTitledBorder(

                            BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),

                            title));

            this.setLayout(new BorderLayout());

            JScrollPane pane= new JScrollPane();

            pane.add(textArea);

            textArea.setLineWrap(true);

            textArea.setWrapStyleWord(true);

            this.add(pane);

        }

    }


    public mwe() {

        x= new MyBorderedPanel("x");

        y= new MyBorderedPanel("y");

        z= new MyBorderedPanel("z");

        u= new MyBorderedPanel("u");

        v= new MyBorderedPanel("v");

        w= new MyBorderedPanel("w");

        jtext= new MyTextPanel("textArea");

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        manageLayout();

    }


    private void manageLayout() {

        this.setLayout(new GridBagLayout());

        GridBagConstraints constraints = new GridBagConstraints();

        constraints.fill = BOTH;

        }


    }

我有上面的代码模拟了应用于 GridBagLayout() 的黄金比例的想法。输出如下:

https://img2.mukewang.com/650ab9cf000147cb08740592.jpg

现在,您可以看到 TextArea 是空的。我希望它的托管面板基本上充满“白色”空间,即使此时文本区域是空的。我记得在 SE 读到过这BorderLayout是可行的方法,所以我尝试了。因此,本质上,我希望文本区域将其托管面板填充到边缘,并且滚动窗格也可见。

如何实现这一目标?上述 MWE 中最相关的代码可能是 MyTextPanel 类。


噜噜哒
浏览 82回答 1
1回答

陪伴而非守候

现在,正如您所看到的,TextArea 是空的。这是因为您实际上尚未将文本区域添加到滚动窗格。JScrollPane pane= new JScrollPane(); pane.add(textArea);上面的代码是错误的。您不必将组件直接“添加”到 JScrollPane 中。相反,您可以将组件添加JViewport到JScrollPane.这是通过执行以下任一操作来完成的:JScrollPane pane= new JScrollPane(textArea);这会将文本区域添加到视口,或者JScrollPane pane= new JScrollPane(); pane.setViewportView(textArea);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java