为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

噜噜哒 2023-09-20 17:21:18
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() 的黄金比例的想法。输出如下:现在,您可以看到 TextArea 是空的。我希望它的托管面板基本上充满“白色”空间,即使此时文本区域是空的。我记得在 SE 读到过这BorderLayout是可行的方法,所以我尝试了。因此,本质上,我希望文本区域将其托管面板填充到边缘,并且滚动窗格也可见。如何实现这一目标?上述 MWE 中最相关的代码可能是 MyTextPanel 类。
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

现在,正如您所看到的,TextArea 是空的。

这是因为您实际上尚未将文本区域添加到滚动窗格。

JScrollPane pane= new JScrollPane();
pane.add(textArea);

上面的代码是错误的。您不必将组件直接“添加”到 JScrollPane 中。

相反,您可以将组件添加JViewportJScrollPane.

这是通过执行以下任一操作来完成的:

JScrollPane pane= new JScrollPane(textArea);

这会将文本区域添加到视口,或者

JScrollPane pane= new JScrollPane();
pane.setViewportView(textArea);


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 45 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信