Java BorderLayout 中的 Swing JList 动态调整大小

Java Swing JList dynamic resize in BorderLayout

目前我正在聊天。目前基地已经设置好,我试着让它变得更好。所以现在我想做一个在线用户列表,但我不知道如何做以下内容: 我目前的聊天(忽略德语):

我已通过以下方式设置在线列表的大小:

JScrollPane userListSP = new JScrollPane();
userListSP.setPreferredSize(new Dimension(200,0));

但是 scrollPane 总是停留在 x = 200 我试图通过添加 minimumSIze:

来修复它
userListSP.setMinimumSize(new Dimension(50,0));

我的问题:有人知道如何实现它调整大小但同时仍然足够大吗?

以此为例:

package com.test.package;

import java.awt.Color;
import javax.swing.DefaultListModel;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

/**
 *
 * @author rmu
 */
public class ChatDemo extends JFrame {

    private final JScrollPane scrollPaneMessages;
    private final JList<String> listMessages = new JList<String>();
    private final JPanel pnlUsers = new JPanel();
    private final JTextField txtUserMsgInput = new JTextField();

    public ChatDemo() {
        scrollPaneMessages = new JScrollPane(listMessages);
        pnlUsers.setBackground(Color.WHITE);
        setVisible(true);
        setTitle("Chat layout demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        putSampleData();
        organizeLayout();
    }

    private void organizeLayout() {
        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addComponent(scrollPaneMessages, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)
                        .addComponent(pnlUsers, 50, 50, 50))
                .addComponent(txtUserMsgInput)
        );
        layout.setVerticalGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(scrollPaneMessages)
                        .addComponent(pnlUsers))
                .addComponent(txtUserMsgInput, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
        );
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        pack();

    }

    private void putSampleData() {
        DefaultListModel<String> listModel = new DefaultListModel<>();
        listModel.addElement("Very long string with many characters... Oh, so long!!");
        listModel.addElement("This string is shorter");
        listMessages.setModel(listModel);
    }

    public static void main(String[] args) {
        new ChatDemo();
    }
}