2015-05-14 59 views
2

我有一個JButton,其背景爲綠色,邊框爲LineBorder。我想在按鈕和邊框之間插入一個空格,這是一種填充。 我試着用setMargin(新的Insets(x,y,t,z)),但它似乎不工作。 這是我的一段代碼。JButton邊框與按鈕之間有填充物

JButton JBtn=new JButton("sdfd"); 
JBtn.setBorder(BorderFactory.createLineBorder(Color.CYAN,5)); 
JBtn.setBackground(Color.GREEN); 
JBtn.setMargin(new Insets(5,5,10,10)); 

有什麼建議嗎?

+0

你想在按鈕和邊框之間的空間仍然是按鈕的一部分? – user1803551

+0

是的,這正是我想要的;-)只在按鈕的一部分中有綠色背景。 – user2896152

+0

你知道邊框已經是按鈕可點擊區域的一部分了,對嗎?基本上你所說的是你想要2個邊界:1個從文本向外,另一個在一個固定大小之後。 – user1803551

回答

3

邊界是按鈕的一部分,並點擊它們會點擊該按鈕。您可以設置背景爲綠色,然後畫上邊框的背景:

jBtn.setBackground(Color.GREEN); 
jBtn.setBorder(BorderFactory.createCompoundBorder(
       BorderFactory.createLineBorder(Color.CYAN, 5), 
       BorderFactory.createLineBorder(Color.BLACK, 20))); 

enter image description here

我試着setMargin(新插圖(X,Y,T,Z)),但它似乎不工作。

因爲如果你讀setMargin的文檔,你會看到

[...]如果一個非默認邊框設置按鈕,它是Border對象負責創建適當的邊距空間(否則該屬性將被有效忽略)。

此外,保留類的大寫名稱,將JBtn重命名爲jBtn

2

Border的更改正在改變margins的工作方式(它們似乎未包含在用於確定佈局的決定中)。

相反,你可以使用一個CompoundBorder,例如...

JBtn.setBorder(BorderFactory.createCompoundBorder(
     BorderFactory.createLineBorder(Color.CYAN, 5), 
     BorderFactory.createEmptyBorder(5, 5, 10, 10))); 
+0

謝謝。我嘗試了你建議的解決方案。不幸的是,結果並不是我想要的。我希望標籤位於按鈕的中心,但只有標籤是綠色的,而標籤和邊框之間的空間仍然是黑色。那可能嗎? – user2896152