盒子佈局似乎非常適合典型聊天佈局的需求,就像我在InkScape中製作的一樣。
與BoxLayout管理器的聊天佈局
我已經根據結構是這樣的:文本字段之間
MainFrame
Chat JPanel - BoxLayout.Y_AXIS
Message list - ScrollablePanel
the list - BoxLayout.Y_AXIS
Text field - Just a text field
現在我似乎有唯一的問題是,在inital階段,空間被分成50%至50%和消息列表。
但是,如果消息區域被填滿,因爲你可以在上面的圖片中看到,我嘗試調整聊天窗口,一切順利的話:
所以:
- 我希望textarea保持相同的大小,即使當消息容器是空的。
- 必須有一個方法才能模擬我調整窗口大小,以便面板正確更新。
下面是聊天面板:
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);
}
}
這裏是給messageManager:
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));
}
}
作爲一般規則,不要將AWT組件(如java.awt.TextField)與Swing組件混合使用。 – trashgod
感謝您提醒我,但現在當我知道該怎麼辦時,我很好奇我應該怎麼做。有一個swing文本框? –
是的,有。 「JTextField」 – AloneInTheDark