2009-12-12 67 views
0

我想創建具有自定義外觀和感覺的按鈕。我有不同的圖像設置爲普通,鼠標懸停,鼠標點擊,按鈕禁用等按鈕的背景。我創建了自己的類,擴展了javax.swing.JButton並覆蓋了paintComponent方法。我怎樣才能改變我的按鈕背景爲所有上述給定的狀態。Java Swing JButton

回答

0
ImageIcon icon = new ImageIcon("images/icon.gif"); 
JButton button = new JButton(icon); 
+0

謝謝你回答yankee2905。此代碼是在按鈕上設置圖標圖像。我想知道如何刪除按鈕的默認外觀和添加我自己的圖像鼠標懸停,鼠標點擊和禁用狀態? – Nilesh 2009-12-12 07:50:04

3

JButton的具有一系列的簡單的設置方法翻轉,壓制,選擇,殘疾人和禁用選擇的狀態 - 例如

button.setPressedIcon(new ImageIcon("images/button-down.png") 

的其它方法是:

button.setRolloverIcon() 
button.setSelectedIcon() 
button.setRolloverSelectedIcon() 
button.setDisabledIcon() 
button.setDisabledSelectedIcon() 

。 ..玩的開心 !

順便說一句,奧賴利有一個稱爲搖擺黑客有很多好吃的東西少一個有趣的書有玩鞦韆:Swing Hacks

4

除了史蒂夫德考克斯的回答,您可以:

  1. 添加MouseListener時改變的enum變量,我們稱之爲state您的擴展JButton
  2. 在你重寫paintComponent考慮到目前的state並繪製不同的背景。像

    if (!getModel().isEnabled()) { 
    } else if (state == ButtonState.MOUSE_OVER) { 
    } else if (state == ButtonState.MOUSE_CLICKED) { 
    } 
    
+0

非常感謝你Bozho ...它的工作很好......我很高興..非常感謝 – Nilesh 2009-12-12 09:04:56

+1

那麼爲什麼你沒有接受答案,所以人們知道這個問題已經得到解答? – camickr 2009-12-12 15:46:03

2

您可以創建一個自定義按鈕UI委託。這個博客條目:http://blog.elevenworks.com/?p=4有一個自定義選項卡窗格的示例,但原理相同。擴展BasicButtonUI,實現你想要的按鈕的自定義渲染,然後調用按鈕上的setUI()。

與使用現有的按鈕API方法來改變外觀相比,這可能需要更長的時間來實現,但它給了您更多的控制權。