微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让 JTextArea 出现在 JTextField 上方?

如何解决如何让 JTextArea 出现在 JTextField 上方?

当我使用 SOUTH 将它们都添加BorderLayout 时,只出现 JTextArea。我将文本字段用作输入,然后将其显示在文本区域中作为其上方的输出以及一些其他文本。

如果我将文本区域设置为 norTH 会起作用,但它看起来不太好。

JPanel cmdPanel = new JPanel(new BorderLayout());

field = new JTextField(20);
cmdPanel.add(field,BorderLayout.soUTH);

JTextArea output=new JTextArea();
output.setEditable(false);
output.setLineWrap(true);
cmdPanel.add(output,BorderLayout.soUTH);

此图显示了 TextArea 设置为 norTH 时的外观。 我只是想让它出现在 TextField 上并向上移动 添加输出时的屏幕。

Image

解决方法

您尚未提供 minimal,reproducible example,但从您正在运行的应用的屏幕截图来看,您似乎明确设置了 JFrame 的大小。而不是这样做,您应该调用方法pack。请注意,您应该JTextFieldJTextArea 添加到 cmdPanel 以及将 cmdPanel 添加到之后调用该方法JFrame。此外,您应该在调用方法 setVisible 之后在 JFrame 上调用方法 pack()

在将 JTextArea 添加到 cmdPanel 之前,您还应该确保它具有首选大小。一种方法是调用采用行数和列数参数的 constructor

也许还可以将 JTextArea 包裹在 JScrollPane 中并使其成为 cmdPanel 的“中心”组件?

JPanel cmdPanel = new JPanel(new BorderLayout());

field = new JTextField(20);
cmdPanel.add(field,BorderLayout.SOUTH);

JTextArea output=new JTextArea(10,20);
output.setEditable(false);
output.setLineWrap(true);
JScrollPane scrollPane = new JScrollPane(output);
cmdPanel.add(scrollPane,BorderLayout.CENTER);
,

不能在同一位置(即 BorderLayout.PAGE_END)添加两个组件。要在同一位置添加更多组件,您应该创建一个 JPanel,在其上添加组件,然后将 JPanel 添加到所需位置(即 BorderLayout.PAGE_END)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。