我在使用
BoxLayout
创建嵌套面板时遇到问题。我有一个布局设置为 BoxLayout
(PAGE_AXIS
) 的容器,在这个容器中我想生成带有 postedPanel
(BoxLayout
) 的面板 (PAGE_AXIS
)。在这个面板中,我有两个带有 PAGE_AXIS
的面板和一个带有 LINE_AXIS
的面板。
带有
LINE_AXIS
的面板(postActions
面板)似乎弄乱了带有 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();
}
显示结果的图像:
你有没有考虑过玩玩
BoxLayout.X_AXIS
或
BoxLayout.Y_AXIS
,因为这似乎有潜力让事情显现出来。
线轴对齐X必须等于页面轴对齐Y以使所有组件保持在中心(如果选择0.5)
页码轴反转轴