2012-07-13 71 views
3

我想在java swing應用程序中顯示標題分隔符。像java swing中的標題分隔符

------- -------文本

東西,我發現提供此功能的一些第三方庫:

但我感興趣的方式沒有使用任何第三方API。我們可以通過擴展JSeparator來做到這一點嗎?我們還能如何做到這一點?

+0

見我的答案在這裏:http://stackoverflow.com/a/9533238/995822。它使用'TitledBorder'。 – 2012-07-13 07:59:21

+0

@SoboLAN是的,這很有幫助。謝謝。 – 2012-07-13 08:03:25

回答

4

使用TitledBorder。像這樣的例子:

import javax.swing.BorderFactory; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 
import javax.swing.border.TitledBorder; 

public class TestBorder { 

    protected void initUI() { 
     JFrame frame = new JFrame(TestBorder.class.getSimpleName()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new JPanel(); 
     TitledBorder titledBorder = BorderFactory.createTitledBorder("Some title"); 
     titledBorder.setTitleJustification(TitledBorder.CENTER); 
     panel.setBorder(titledBorder); 
     frame.add(panel); 
     frame.setSize(400, 300); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new TestBorder().initUI(); 
      } 
     }); 
    } 

} 
+0

它向左顯示文本,我希望文本位於行分隔符的中心。 – 2012-07-13 08:00:45

+0

@mark更新了我的代碼。只需設置邊界的理由。 – 2012-07-13 08:02:27

+0

是的,現在很好。 :) 謝謝。 – 2012-07-13 08:03:53

5

我想你可能能夠使用一個MatteBorder的組合的TitledBorder

MatteBorder mb = new MatteBorder(1, 0, 0, 0, Color.BLACK); 
TitledBorder tb = new TitledBorder(mb, "Some Long Text", TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION); 
+0

太好了。 :)它應該是'TitledBorder'而不是'TitleBorder'。 – 2012-07-13 08:31:26

+0

在iPad上打字,總是很有趣:P – MadProgrammer 2012-07-13 09:06:20

0

簡單且小寫。

import javax.swing.border.*; 

然後

BevelBorder bedge=new BevelBorder(BevelBorder.RAISED); 
lbl.setBorder(bedge); 

-----------------下一個邊界類型

import javax.swing.border.*; 

然後

TitledBorder tedge=new TitledBorder(TitledBorder.CENTER); 
lbl.setBorder(tedge);