Я создаю базовое приложение для чата, которое имеет текстовые поля справа для ваших собственных сообщений и слева для сообщений других участников.Каждое сообщение находится в строке контейнера Y_Axis Box Layout.После публикации нового сообщения я хочу, чтобы последнее сообщение было видно, поэтому я подумал, что буду использовать scrollComponentToVisible для контейнера с окнами сообщений (метками).Однако, независимо от того, что я даю в качестве параметра, он просто прокручивается до самого верха контейнера.Это означает, что контейнер прокручивается, и команда что-то делает, однако она прокручивается вверх, а не вниз к тому, что я хочу видеть.
Фрагмент кода:
// chat history
Container chatHistory = new Container(new BoxLayout(BoxLayout.Y_AXIS));
chatHistory.setScrollableY(true);
hi.add(BorderLayout.CENTER, chatHistory);
...
// send button and action event for sending message
sendButton.addActionListener(e ->{
chatHistory.add(FlowLayout.encloseRight(new Label(chatInput.getText(), null, "chatOwn"))); // TODO word wrap text
chatInput.setText("");
Label newMessage = new Label("auto response", null, "chatOther");
chatHistory.add(FlowLayout.encloseLeftMiddle(newMessage));
// this is where the magic should happen
chatHistory.scrollComponentToVisible(newMessage);
});
Я знаю оплавная прокрутка, которую мне нужно установить в false при прокрутке, но исключить ее из кода, чтобы сделать ее как можно более короткой.
Любые советы о том, что здесь не так, приветствуются.