我的目标是在框中显示通过UDP服务器接收的消息。为此,我创建了一个 JScroll 栏,并添加了一个 JPanel。当我收到消息和对象接收时,将创建扩展 JTextArea 并将其添加到 JPanel 中。我的问题是,当我在JPanel中显示太多消息时,它会自动调整我的文本区域的大小。如何设置 TextAreas 不可调整大小,以便即使消息在面板中不可见,也会添加消息,然后使滚动条最终有用。这是我的测试代码来说明:package test;import java.awt.Color;import java.awt.Dimension;import java.awt.GridBagLayout;import java.awt.GridLayout;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.ScrollPaneConstants;import javax.swing.border.LineBorder;public class test { public static void main(String args[]){ JFrame frame = new JFrame(); JPanel RXCommand = new JPanel(); RXCommand.setPreferredSize(new Dimension(500, 250)); RXCommand.setBorder(new LineBorder(Color.black)); RXCommand.setLayout(new GridLayout(0,1)); JScrollPane scrollPane = new JScrollPane(RXCommand, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.setPreferredSize(new Dimension(500, 250)); RXCommand.add(new ReceivedCommand("11:02:56", "5", "5", "command exemple", "command exemple")); RXCommand.add(new ReceivedCommand("11:02:56", "5", "5", "command exemple", "command exemple")); RXCommand.add(new ReceivedCommand("11:02:56", "5", "5", "command exemple", "command exemple")); RXCommand.add(new ReceivedCommand("11:02:56", "5", "5", "command exemple", "command exemple")); RXCommand.add(new ReceivedCommand("11:02:56", "5", "5", "command exemple", "command exemple")); }}
1 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
JPanel RXCommand = new JPanel();
首先,变量名称不应以大写字符开头。论坛将突出显示类名,以使代码易于阅读。注意到论坛如何认为您的变量名称是类名吗?了解并遵循 Java 命名约定。
如何设置文本区域不可调整大小
RXCommand.setLayout(new GridLayout(0,1));
不要使用网格布局。网格布局将占用所有可用空间。因此,第一个组件占用了100%的空间。当你有两个时,每个都占50%。
请改用 或 .BoxLayout
GridBagLayout
阅读 Swing 教程中的布局管理器部分,以获取更多信息和示例,以帮助您入门。
然后使滚动条最终有用
上面安德鲁的评论已经回答了。
添加回答
举报
0/150
提交
取消