2011-03-08 58 views
2

是否可以在JComponent的左邊(或右邊)放置標題?JComponent左邊的SetTitlePosition

我的意思不是理由,但實際位置..

我tryed在與JComponent的相關的TitledBorder setTitlePosition(TitledBorder.LEFT),但似乎沒有工作(也許離開是唯一理由?)

如果這是不可能的,有沒有人有一個相當簡單的方法來實現這種效果?

我想寫一些像這樣的代碼:

TitledBorder titleB = new TitledBorder(description); 
titleB.setTitlePosition(LEFT); 
+0

有在JComponent中沒有方法setTitlePosition;您想要設置標題的實際組件類型是什麼?我猜TitledBorder? – 2011-03-08 11:38:19

+0

@TheStijn是的謝謝..我說這樣說明TitledBorder關聯的左邊位置是相對於JComponent。也許現在更清楚 – Heisenbug 2011-03-08 11:52:07

+0

爲什麼不把JLabel放在與組件相同的行上,而是放在第一列?直接與最常見的LayoutManager配合使用:GridBagLayout,DesignGridLayout,MigLayout ...此外,不鼓勵使用TitledBorder(查找Karsten Lentzsch演示文稿)。 – jfpoilpret 2011-03-08 14:26:01

回答

3

我猜你有一個IllegalArgumentException因爲LEFT顯然不是一個有效的位置。這是TitledBorder.setTitlePosition代碼:

switch (titlePosition) { 
     case ABOVE_TOP: 
     case TOP: 
     case BELOW_TOP: 
     case ABOVE_BOTTOM: 
     case BOTTOM: 
     case BELOW_BOTTOM: 
     case DEFAULT_POSITION: 
      this.titlePosition = titlePosition; 
      break; 
     default: 
     throw new IllegalArgumentException(titlePosition + 
            " is not a valid title position."); 
    } 

我不認爲設置左部件的/右存在開箱即用的標題。然而,你可以創建自己的邊框或者(可能)更容易的你自己的組件,它有一個標籤垂直顯示文本,然後這個自定義組件被添加到面板或類似的使用BorderLayout左/右。

格爾茨,
斯泰恩

+0

不,我不是在尋找理由。我真的想在相關的JComponent的左邊或右邊放置一個標題。 – Heisenbug 2011-03-08 12:24:34

+0

好的,所以實際上你希望邊界位於左邊或右邊該組件? – 2011-03-08 12:28:03

+0

+1這看起來更像是@Overbose正在尋找的東西。 – trashgod 2011-03-08 12:29:06

2

若干JComponent子類,如那些用於標籤和按鈕,包括設置組件的標題文本相對於其圖標的水平和垂直位置的方法。這example顯示DefaultTableCellRendererJLabel一個子類,與右側的標籤:

this.setHorizontalAlignment(JLabel.RIGHT); 
+0

我想我還沒有理解你的答案。也許我不清楚問的問題。現在我編輯它。我怎麼能達到像這樣的東西使用titledborder? – Heisenbug 2011-03-08 12:23:25

+1

@Overbose:對不起,我誤解了這個問題。@TheStijn在正確的軌道上。[相關教程](http://download.oracle.com/javase/tutorial/uiswing/components/border.html )有更多的。 – trashgod 2011-03-08 12:28:02