带有滚动条设置内容的JPanel不可调整大小

我的目标是在框中显示通过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"));

    }

}

守着星空守着你
浏览 79回答 1
1回答

守着一只汪

JPanel RXCommand = new JPanel();首先,变量名称不应以大写字符开头。论坛将突出显示类名,以使代码易于阅读。注意到论坛如何认为您的变量名称是类名吗?了解并遵循 Java 命名约定。如何设置文本区域不可调整大小RXCommand.setLayout(new GridLayout(0,1));不要使用网格布局。网格布局将占用所有可用空间。因此,第一个组件占用了100%的空间。当你有两个时,每个都占50%。请改用 或 .BoxLayoutGridBagLayout阅读 Swing 教程中的布局管理器部分,以获取更多信息和示例,以帮助您入门。然后使滚动条最终有用上面安德鲁的评论已经回答了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java