简体   繁体   English

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

[英]Java Swing JList dynamic resize in BorderLayout

currently I'm working on a Chat. 目前,我正在聊天。 At the moment the base is set and I try to make it more nicer. 目前已确定基准,我尝试使其更好。 So now I want to do a online user list but I dont know how to make the following: My Chat Currently(Ignore german language): 所以现在我想做一个在线用户列表,但是我不知道该如何做:当前我的聊天(忽略德语): 在此处输入图片说明

I have set the size of the online list by the following: 我通过以下方式设置了在线列表的大小:

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

But then the scrollPane always stays at x = 200 但是然后scrollPane始终保持在x = 200 在此处输入图片说明 I tried to fix it by adding minimumSIze: 我试图通过添加minimumSIze来解决此问题:

userListSP.setMinimumSize(new Dimension(50,0));

My Question: Has someone an Idea how to accomplish that it resizes but at the same time is still big enough? 我的问题:有人知道如何调整大小,但同时又足够大吗?

Try this as an example: 以此为例:

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();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM