2014-10-04 85 views
0

我正在制作苹果日历应用程序的副本,并且我无法将月份名称和年份名称与屏幕中心对齐,同时将左右按钮与屏幕左侧和右侧对齐。这里是我的代码:如何在JFrame中居中并扩展我的JPanel?

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); 

但它显示是这样的:

http://i.stack.imgur.com/RasfN.png

回答

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); 
+0

这个工程几乎达到100%。一切都在正确的地方,除了我的东部按钮紧挨着我的中央控制台。有水平胶水或我可以用来解决这个问题吗? – 2014-10-04 21:11:09

+0

该代码适合我。发布你的[SSCCE](http://sscce.org/)来证明问题。 – camickr 2014-10-04 22:17:02

+0

这里是一个截图http://imgur.com/Nig83EK我希望右边的按钮可以在JPanel – 2014-10-04 23:02:09