我正在制作苹果日历应用程序的副本,我无法将月份名称和年份名称与屏幕中心对齐,同时将左右按钮与屏幕的左侧和右侧对齐。这是我的代码:
final JPanel months = new JPanel();
months.setLayout(new BoxLayout(months,BoxLayout.X_AXIS));
months.add(back, BorderLayout.WEST); //back is a JButton
JLabel monthName = new JLabel(this.monthNames[this.month]+" ", SwingConstants.CENTER);
JLabel year = new JLabel("" + this.year, SwingConstants.CENTER);
monthName.setFont(new Font("Helvetica", 0, 24));
year.setFont(new Font("Helvetica", 0, 24));
monthName.setHorizontalAlignment(JLabel.CENTER);
months.add(monthName, BorderLayout.CENTER);
months.add(year, BorderLayout.CENTER);
months.add(front, BorderLayout.EAST);
add(months);
然而它出现了这样:
答案 0 :(得分:0)
months.setLayout(new BoxLayout(months,BoxLayout.X_AXIS));
您正在使用BoxLayout
。 BoxLayout只是将组件水平添加到面板。 WEST,CENTER,EAST约束仅由BorderLayout
使用,因此BoxLayout会忽略它们。
months.add(monthName, BorderLayout.CENTER);
months.add(year, BorderLayout.CENTER);
使用BorderLayout
时,您只能将单个组件添加到布局的某个区域。因此,如果要向CENTER添加两个组件,则需要先创建一个面板并将组件添加到面板中。
所以你的基本代码可能是这样的:
JPanel centerPanel = new JPanel();
centerPanel.add(month);
centerPanel.add(year);
JPanel mainPanel = new JPanel( new BorderLayout() );
mainPanel.add(westButton, BorderLayout.WEST);
mainPanel.add(centerPanel, BorderLayout.CENTER);
mainPanel.add(eastButton, BorderLayout.EAST);