2010-12-06 90 views
0

我正在開發一個項目。我想添加一個工具欄到軟件中,所以我在面板中放了一些按鈕。但是,默認的按鈕樣式不符合我的需要。我希望該按鈕具有以下效果:自定義JButton風格

  1. 當鼠標懸停在按鈕上時,該按鈕應該看起來像JLabel。按鈕中的圖標看起來像面板上的圖像,即我們可以看到的是按鈕中的圖標,而其他東西是透明的。
  2. 當鼠標懸停在按鈕上時,會出現按鈕的邊框。它看起來像一個真正的按鈕。

示例:就像eclipse工具欄上的按鈕一樣。

回答

1

那麼,你想定製你的JButton渲染?首先,對於一個包羅萬象的解決方案,你可以看看現有的LnF,如Substance(顯然,它是一個非常強大的解決方案來滿足你的需求,但它可能會給你一些啓發)。

然後,如果你想自己解決,你必須重寫paintComponent方法。

對此,第一步是子類JButton

然後,在您的子類中,首先重新定義paintComponent(Graphics)方法。

請注意,如果所有這一切都過於複雜,您還可以看看setBorderPainted(boolean)方法。

1

擴展JButton,並:

  • 只需添加一個圖標,而不是文字, 按鈕。
  • 添加MouseMotionListener以捕獲 懸停以顯示/隱藏邊框。
3

爲什麼不用use a JToolbar而不是JPanel?

+1

+1,OP說他想要一個工具欄。不要重新發明輪子並使用標準的工具欄組件。 – camickr 2010-12-06 16:17:45

1

我明白了。我的問題的答案是setContentAreaFilled()方法。當鼠標懸停在按鈕上時,調用setContentAreaFilled(true)。否則,調用setContentAreaFilled(false)。這裏是一個相對代碼:link text