如何解决如何让 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 上并向上移动 添加输出时的屏幕。
解决方法
您尚未提供 minimal,reproducible example,但从您正在运行的应用的屏幕截图来看,您似乎明确设置了 JFrame
的大小。而不是这样做,您应该调用方法pack。请注意,您应该在将 JTextField
和 JTextArea
添加到 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 举报,一经查实,本站将立刻删除。