У меня возникают проблемы с созданием вложенных панелей с помощью BoxLayout
. У меня есть контейнер с макетом, установленным на BoxLayout
(PAGE_AXIS
), и в этом контейнере я хочу сгенерировать панели (postedPanel
) также с BoxLayout
(PAGE_AXIS
). И внутри этой панели у меня две панели с PAGE_AXIS
и одна с LINE_AXIS
.Вложенные BoxLayout с разными осями
Эта панель с LINE_AXIS
(postActions
panel), кажется, испортила ширину и выравнивание панелей с помощью PAGE_AXIS
. Когда я устанавливаю ось postActions
на PAGE_AXIS
, остальные панели растягиваются до полной ширины контейнера, но когда это LINE_AXIS
, остальные панели сжимаются до половины ширины контейнера. Любые идеи, как это можно исправить?
Вот код:
public void generateFeed(JPanel container) {
JPanel postedPanel = new JPanel();
postedPanel.setBackground(Color.WHITE);
postedPanel.setLayout(new BoxLayout(postedPanel, BoxLayout.PAGE_AXIS));
// sample post
JPanel postContent = new JPanel();
postContent.setLayout(new BoxLayout(postContent, BoxLayout.PAGE_AXIS));
postContent.setBackground(Color.WHITE);
JLabel usernameLabel = new JLabel("Name");
postContent.add(usernameLabel);
JLabel dateLabel = new JLabel("Date posted");
postContent.add(dateLabel);
JLabel status = new JLabel("<html>Content Content Content ContentContent</html>");
postContent.add(status);
postedPanel.add(postContent);
// like, comment panel
JPanel postActions = new JPanel();
postActions.setLayout(new BoxLayout(postActions, BoxLayout.LINE_AXIS));
postActions.setBackground(Color.WHITE);
JButton likeButton = new JButton("Like");
postActions.add(likeButton);
JLabel likesLabel = new JLabel("0 Likes");
postActions.add(likesLabel);
JButton commentButton = new JButton("Comment");
postActions.add(commentButton);
JLabel commentsLabel = new JLabel("0 Comments");
postActions.add(commentsLabel);
postedPanel.add(postActions);
// sample comment
JPanel addCommentPanel = new JPanel();
addCommentPanel.setLayout(new BoxLayout(addCommentPanel, BoxLayout.PAGE_AXIS));
addCommentPanel.setBackground(new Color(246,247,248));
JLabel commentUser = new JLabel("Name");
addCommentPanel.add(commentUser);
JLabel commentText = new JLabel("<html>Comment Comment Comment Comment Comment Comment </html>");
addCommentPanel.add(commentText);
JLabel commentDateLabel = new JLabel("Date");
addCommentPanel.add(commentDateLabel);
postedPanel.add(addCommentPanel);
container.add(postedPanel);
pack();
}
И образ, показывающий результат:
Я установил выравнивание всех панелей в LEFT_ALIGNMENT, и это сделало трюк. Благодаря! – dyrim
Просьба [принять ответ] (http://meta.stackexchange.com/a/5235/155831), если это помогло решить проблему. –