gpt4 book ai didi

java - 使用 BoxLayout 管理器进行聊天布局

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:49 24 4
gpt4 key购买 nike

Box 布局似乎非常适合典型聊天布局的需求,就像我在 InkScape 中所做的那样。
enter image description here

我的结构如下:

MainFrame
Chat JPanel - BoxLayout.Y_AXIS
Message list - ScrollablePanel
the list - BoxLayout.Y_AXIS
Text field - Just a text field

现在我似乎遇到的唯一问题是,在初始阶段,文本字段和消息列表之间的空间被划分为 50% 到 50%。

enter image description here

但是,如果消息区域被填满,如上图所示,并且我尝试调整聊天窗口的大小,一切都会顺利进行:

enter image description here

所以:

  1. 我希望文本区域保持相同的大小,即使消息容器为空也是如此。
  2. 必须调用一个方法来模拟我调整窗口大小,以便面板正确更新。

这是聊天面板:

public class ChatPanel extends JPanel {
private BoxLayout layout;
private TextField input;
private MessageList messages;
public ChatPanel() {
layout = new BoxLayout(this, BoxLayout.Y_AXIS);
setLayout(layout);
//Create message list
messages = new MessageList();
messages.appendTo(this);
//Create text field
input = new TextField();
add(input);
}
public void addMessage(String message) {
messages.addMessage(message);
}
public void appendTo(JFrame frame) {
frame.getContentPane().add(this);
}
}

这是消息列表:

public class MessageList extends JPanel {
public MessageList() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

}
public void addMessage(String message) {
JLabel lb = new JLabel();
lb.setText(message);
add(lb);
validate();
}
public void appendTo(JPanel frame) {
frame.add(new JScrollPane(this));
}
}

最佳答案

How to Use BoxLayout: Specifying Component Sizes所示,您可以override您选择的 JTextComponent 中的 getXxxSize() 方法子类。

关于java - 使用 BoxLayout 管理器进行聊天布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23317978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com