2011-07-29 114 views
5

我想在我的JButton上保留默認邊框,但也在它們周圍留出空白區域。我正在使用垂直BoxLayout如何在Jbutton邊緣添加間隙?

  • 我原本避談邊界,並得到了單個像素LineBorder S,這是我想要的,但按鍵全部抵靠在對方。

  • 我又試圖button[i].setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5))。而不是在按鈕周圍添加空白區域,它使按鈕的區域擴大。它也刪除了LineBorder

  • 我然後設法:button[i].setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5), button.getBorder()))

這給我回了LineBorder,而是比線外添加空格,它只是延長了按鈕的區域超越線!

我知道我可以添加空白框來留出我的按鈕空間,但我也希望在它們兩側留出空間,這就是爲什麼我要添加EmptyBorder。我是新來的擺動,所以也許有這樣做,我不知道:)

我使用的Jython的完全更好的辦法,但API應該是一樣從Java。

回答

4

從概念上講,你要添加的「空邊界」是不是真正的按鈕(例如,他們不應該點擊)的一部分。

這實際上是佈局的問題,所以你應該檢查你正在使用的佈局管理器的文檔。例如:

依此類推。

+0

嗯。當我點擊線邊界外的按鈕時,它仍然有效? FlowLayout不會讓你垂直排列東西嗎? –

+0

@CamJackson:FlowLayout不允許你垂直排列東西,但是BoxLayout可以。 – Grodriguez

+0

謝謝,看起來答案基本上是「找到更好的佈局!」 :P –

3

我認爲將按鈕添加到面板並將空邊框設置爲面板會更簡單。

+0

這也可以。然後,面板上的邊框在標題內部的蝕刻內部空白(面板外部的空間)內爲空。如果我在我的邊界上有四層嵌套,我會「做錯了」嗎? –

+0

多層可以。我甚至會創建一個自定義組件MyBorderedButton擴展了JPanel,並在必要時使用它來代替按鈕。 – StanislavL

+0

@StanislavL:我發現它有一個XXXButton子類,它實際上是一個JPanel(而不是Button的子類)。例如,將一個動作監聽器附加到你的MyBorderedButton或者Button裏面? – Grodriguez