2012-01-14 15 views
7

mới vào java và thương hiệu mới cho trang web. Tôi có một JLabel được thêm vào bảng điều khiển trung tâm của BorderLayout. Tôi muốn JLabel làm trung tâm trong bảng điều khiển; setAlignmentX dường như hoạt động, nhưng setAlignmentY không (nhãn xuất hiện ở đầu bảng). Đây là mã:setAlignmentY không định tâm JLabel trong BorderLayout

centerPanel = new JPanel(); 
centerPanel.setLayout(new BoxLayout(centerPanel,BoxLayout.Y_AXIS)); 

JLabel label = new JLabel("This should be centered"); 
label.setAlignmentX(Component.CENTER_ALIGNMENT); 
label.setAlignmentY(Component.CENTER_ALIGNMENT); 
centerPanel.add(label); 

contentPane.add(centerPanel, BorderLayout.CENTER); 

Tôi cũng đã thử label.setVerticalAlignment (CENTER) ;, không có kết quả. Tôi đã tìm kiếm câu trả lời trong API và trong Hướng dẫn Java, trên trang web này và thông qua tìm kiếm trên google. Cảm ơn!

Trả lời

17

bạn rất thân thiết, cố gắng này:

public static void main(String[] args) 
{ 
    JFrame contentPane = new JFrame(); 
    JPanel centerPanel = new JPanel(); 
    centerPanel.setLayout(new BorderLayout()); 

    JLabel label = new JLabel("This should be centered"); 
    label.setHorizontalAlignment(SwingConstants.CENTER); 
    centerPanel.add(label, BorderLayout.CENTER); 

    contentPane.add(centerPanel, BorderLayout.CENTER); 
    contentPane.pack(); 
    contentPane.setVisible(true); 

} 

một trong rất nhiều những niềm vui của lập trình GUI trong Java. Tôi thà thò mắt ra nếu tôi thành thật

+2

+1 cho căn chỉnh, cũng có sẵn trong một hàm tạo; -0,01 cho chấn thương mắt. :-) – trashgod

+1

Có cách nào để giữ BoxLayout, với các thành phần được thêm vào BoxLayout theo chiều dọc ở giữa bảng điều khiển trung tâm của BorderLayout không? – Jehu

+0

có một đọc ở đây: http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html Tôi đánh giá cao nó là đau đớn nhưng tôi nghĩ rằng nó sẽ giúp bạn hiểu hơn là chỉ hack đi tại mã –

0

Tôi đã cố gắng căn giữa theo chiều dọc JButton nhưng tôi đã gặp sự cố khi kéo dài. Sau khi không tìm thấy, tôi thấy công trình này hoạt động:

JPanel jpTop = new JPanel(new BorderLayout()); 
jbStop = new JButton("Cancel"); 
JPanel extraPanel = new JPanel(); 
extraPanel.setLayout(new BoxLayout(extraPanel, BoxLayout.X_AXIS)); 
extraPanel.setAlignmentY(Component.CENTER_ALIGNMENT); 
extraPanel.add(jbStop); 
jpTop .add(extraPanel, BorderLayout.EAST); 

Tất nhiên nó cũng hoạt động tốt với JLabel.