2014-10-04 82 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