2013-02-23 141 views
2

我寫了一個POS系統(銷售點)的樂趣。 POS系統的典型特徵是具有不同產品背景顏色的按鈕。但我不是說按鈕的圖像後面的背景,我的意思是想在這個隨機圖片我下車谷歌圖片: enter image description hereJButton背景圖片

編輯:請注意,我改變了外觀和感覺系統中的一個

我需要用我的按鈕做這樣的事情。我知道幾種可能的方式:

  1. 爲我的按鈕創建外觀和感覺?
  2. 完全覆蓋我的JButtons中的paintComponenet方法(但這是一個非常可憐的方式來做到這一點......並且當我重寫該邊框+文本時不會繪製...顯然是一個糟糕的主意)
  3. 使用按鈕.setContentAreaFilled(false);,並在按鈕後面放置一個與Button大小相同的JPanel。

我真的不知道如何創建自己的外觀和感覺,這聽起來像是一種痛苦,特別是對於1個按鈕,我聽到了一些關於打破外觀和感覺的東西,理念。第三種方式聽起來似乎合理,而且不是非常困難,但我是什麼方式來做我想做的事情?

現在我創建butons代碼是這樣的:

JButton b = new JButton(text); 
    b.addActionListener(this); 
    b.setFont(Main.f); 
    b.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); 
    buttons.add(b); 
    return b; 

我用這個代碼(大多爲樂趣,而不是實用性)圍繞搞砸:

JButton b = new JButton(text){ 
     public void paintComponent(Graphics g){ 
      super.paintComponent(g); 
      Color bg = getBackground(); 
      int borderchange = -50; 
      g.setColor(new Color(
        Math.max(0,bg.getRed()+borderchange), 
        Math.max(bg.getGreen()+borderchange,0), 
        Math.max(bg.getBlue()+borderchange,0))); 
      g.fillRect(0,0,getWidth(),getHeight()); 
      g.setColor(getBackground()); 
      int border = 4; 
      g.fillRect(border,border,getWidth()-border,getHeight()-border); 
      g.setColor(Color.BLACK); 
      g.setFont(getFont()); 
      g.drawString(getText(),getWidth()/2,getHeight()/2); 
     } 
    }; 

回答

2
  • 爲我的按鈕創建外觀和感覺?

    1. 外觀和感覺是一樣的東西爲主題,

    2. 默認情況下該到ColorScheme有一個,兩個,三個顏色,這個主題是適用於所有的Swing JComponents,

    3. 那麼所有的Swing JComponents都有相同的顏色,ColorScheme

    4. 不是你要找的東西

  • 完全重寫paintComponenet方法在我Jbutton將(但 這是一個非常可悲的方式做到這一點......當我重寫邊框+文字是不是 繪製...顯然是一個壞主意)

  • 的JButton有顏色

  • 你可以重寫paintComponent的陣列,填補整個區域,矩形用一種顏色(不是你找),或者使用的GradientPaint

  • 可以覆蓋BasicButtonUI

  • 覆蓋正確的密鑰在UIManager and put there arrays of Colors

  • 使用button.setContentAreaFilled(假),和把 相同大小的一個JPanel作爲後面的按鈕的按鈕。

    1. ,這可能是最簡單的方式,準備圖標(或下載一套圖標的)

    2. 使用適當的方法,來實現(鼠標&重點&鍵綁定)事件

+0

是的,我想我只是想用JPanel的想法。 – csga5000 2013-02-23 19:46:02

+0

我只會使用JButton,否則您必須實現默認情況下在JButton中實現的所有方法,如果不使用JLabel和Icon(basisc stuff) – mKorbel 2013-02-23 20:48:10

1

你試過:

yourButton.setBackground(COLOR) 

+0

當然,當我做的小脊在我的按鈕變爲彩色按鈕按鈕顏色不。我可能應該注意到我改變了系統的外觀 – csga5000 2013-02-23 18:00:01