2015-10-16 52 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