2015-10-16 85 views
2

我想將Multiline JLabel顯示到JPanel中。 所以我有這個代碼,但我無法顯示多行JLabel。如何在JLabel中設置填充

public class NotificationFrame extends JFrame{ 
    public NotificationFrame(){ 
     JPanel panelBody = new JPanel(); 
     panelBody.setBackground(Color.white); 
     GridBagConstraints GBC2 = new GridBagConstraints(); 
     Container CR2 = new Container(); 
     GridBagLayout GBL2 = new GridBagLayout(); 
     CR2.setLayout(GBL2);  
     panelBody.add(CR2); 

     GBC2 = new GridBagConstraints(); 
     CR2.add(labelTesto); 
     GBC2.gridx=0; 
     GBC2.gridy=0; 
     GBC2.insets.left = 10; 
     GBC2.insets.top=0; 
     GBL2.setConstraints(labelTesto,GBC2); 
     panelBody.setLayout(new FlowLayout(FlowLayout.CENTER)); 


     add(panelBody,BorderLayout.CENTER); 
    } 
} 

如果我改變的代碼

add(labelTest,BorderLayout.CENTER); 

最後一行我可以證明,我想要的。但它是不正確的,因爲我想設置一個JLabel

填充

編輯

我現在已經使用此代碼:

JPanel panelBody = new JPanel(); 
panelBody.setBackground(Color.white); 
SpringLayout layout = new SpringLayout(); 
panelBody.setLayout(layout); 
panelBody.add(labelTesto); 
layout.putConstraint(SpringLayout.NORTH, labelTesto, 15, SpringLayout.NORTH, panelBody); 
add(panelBody,BorderLayout.CENTER); 

這是佈局:

enter image description here

這是我應該做的所有測試參見: 「Il 31 Dicembrescadràl'assistenza,ricorda di rinnovare l'assistenza per ricevere sempre assistenza ed aggiornamenti。」

+2

對於最好的幫助:後你的願望的形象,你在說什麼之一,創建併發布[mcve]。 –

+2

我從來沒有在代碼中看到'new Container()'。我建議你將它改爲'new JPanel()'。 – VGR

+1

*「我想在JLabel上設置填充」*向標籤添加一個EmptyBorder。但是,對於比評論更好的事情,請遵循@HovercraftFullOfEels的忠告。 –

回答

2

Multiline它不是填充。爲了在JLabel或JButton中實現多行文本,你需要使用HTML。

文本換行(或多行):

btn.setText("<html><p>Il 31 Dicembre scadrà l'assistenza, ricorda di rinnovare l'assistenza per ricevere sempre assistenza ed aggiornamenti</p></html>"); 
label.setText("<html>Date:<br></html>"+getDateFromSomeWhere); 

要設置填充:

label.setBorder(new EmptyBorder(0,10,0,0));//top,left,bottom,right