2010-06-16 113 views
4

圓角標題邊框,我也明白,要創建一個標題邊界,你這樣做:如何創建的Java Swing

BorderFactory.createTitledBorder(" Your Title "); 

但是這將創建一個矩形邊框,而我需要具有圓角的矩形。

從我的理解,你可以創建自己的自定義邊框

現在:

class CustomBorder implements Border 
{ 
    ... 
} 

的問題是,我不知道如何編寫覆蓋方法的代碼:

public void paintBorder(Component component, Graphics g, int x, int y, int width, int height) 

或更好的是,有沒有辦法做到這一點,而無需實現自己的Border類?如果不是,你會如何編寫自定義標題邊框?我可以畫一個帶圓角的長方形,但是你怎麼做才能讓標籤有空間?

+0

請忽略此問題。一旦創建了RounderBorder類,Swing將爲您刪除標題文本下的邊框。 – 2010-06-16 20:08:14

+0

其實不理我最後的評論。只有在使用BorderFactory創建邊框時纔會執行此操作,例如LineBorder。猜是時候看看LineBorder是如何繪製的... – 2010-06-16 20:36:17

回答

6

可以使用圓角創建標題邊框而無需實現自己的Border類。只需將一個圓形邊框傳遞給TitledBorder的構造函數即可。請嘗試以下操作:

LineBorder roundedLineBorder = new LineBorder(Color.black, 5, true); 
TitledBorder roundedTitledBorder = new TitledBorder(roundedLineBorder, "Title"); 
3

雖然這個線程是有點已經老了,也許有人誰絆倒可能找到有用的解決方案:

您可以添加標題,以任何邊界你想:

  1. 實現您的自定義邊框類public class MyBorder extends AbstractBorder {...並在public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) 方法,你可以在圖形上下文繪製自己的自定義邊框

  2. 創建這個自定義邊框

    Border myborder = new MyBorder(); 
    
  3. 的情況下使用您的自定義邊框爲模板創建的TitledBorder並把它添加到你想要的對象(在這種情況下,一個JPanel:

    jPanel1.setBorder(BorderFactory.createTitledBorder(myborder , "Border title")); 
    

您現在應該可以看到您的自定義邊框,並在上方看到標題的外觀&的默認設置感覺您正在使用。