2012-09-21 83 views
1

你好新手Java程序員在這裏,這可能是一個非常愚蠢的問題,但即時通訊有問題添加多個JLabels到我的看法。他們似乎在互相掩護。我一直在閱讀關於這三位版面管理者的信息,但我似乎找不到一本簡單的教程。JLabels放在彼此的頂部

//Size and positioning 
    setSize(500,400); 
    setLocationRelativeTo(null); 

    //Set Frame Background color 

    //Set Labels 
    JLabel labelTitle = new JLabel("<html><center>My CD/DVD Collection</center></html>",null,JLabel.CENTER); 
    labelTitle.setFont(new Font("Arial",0 , 28)); 
    labelTitle.setVerticalAlignment(JLabel.TOP); 
    add(labelTitle); 
    labelTitle.setBorder(BorderFactory.createEmptyBorder(50 /*top*/, 0, 0, 0)); 

    JLabel labelContent = new JLabel("<html><center> created by Daniel Del Core <br> Java</center></html>",null,JLabel.CENTER); 

    add(labelContent); 

感謝所有幫助:)

回答

3

您的代碼添加元素直接向JFrameJDialog,默認情況下有一個BorderLayout,讓您的所有標籤中BorderLayout.CENTER結束。這就是它們重疊的原因。

以下是使用FlowLayout代碼的示例。請注意,我正在使用面板添加標籤並將面板添加到窗口的內容窗格中。

JPanel panel = new JPanel(); 
panel.setLayout(new FlowLayout()); 
//Set Labels 
JLabel labelTitle = new JLabel("<html><center>My CD/DVD Collection</center></html>",null,JLabel.CENTER); 
labelTitle.setFont(new Font("Arial",0 , 28)); 
labelTitle.setVerticalAlignment(JLabel.TOP); 
panel.add(labelTitle); 
labelTitle.setBorder(BorderFactory.createEmptyBorder(50 /*top*/, 0, 0, 0)); 

JLabel labelContent = new JLabel("<html><center> created by Daniel Del Core <br> for <br> Java Programming and Applications</center></html>",null,JLabel.CENTER); 
panel.add(labelContent); 
getContentPane().add(panel); 
+0

好東西!我終於明白麪板現在是什麼:) –

3

我在猜測你對JFrame調用了這些方法。在JFrame上致電add()時,實際上將組件添加到JFrameJFrame.getContentPane())的內容窗格。默認情況下,內容窗格使用BorderLayout。將沒有約束的組件添加到使用BorderLayout的容器時,可以將它們添加到中心。由於一次只能顯示一個組件,因此您只能看到其中一個組件。

試試這個(只是爲了看看效果):

getContentPane().setLayout(new FlowLayout()); 

而且看看這些教程:

+0

非常感謝:) –

相關問題