2014-04-29 101 views
2

我正在使用netbeans平臺模塊來開發此桌面應用程序。我在開發中使用NetBeans中的拖放工具。如何向jtoolbar中放置的Jbutton添加漸變顏色

我需要創建一個有幾個按鈕的工具欄..我需要爲這些按鈕創建一個漸變顏色。

我拖放JToolBar,在它上面拖動並放置了JButton對象。 在按鈕的屬性中,我選擇了一種我想要陰影顏色的顏色。在我修改的自定義代碼中。

jbutton = new javax.swing.Jbutton(); 

,當我用上面的代碼在自己的項目中JPanel它的工作,但它沒有顯示時,我用了一個按鈕任何效果低於

jbutton = new javax.swing.JButton(){ 
    @Override 
    protected void paintComponent(Graphics grphcs) { 
     Graphics2D g2d = (Graphics2D) grphcs; 
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
      RenderingHints.VALUE_ANTIALIAS_ON); 
     GradientPaint gp = new GradientPaint(0, 0, 
      getBackground().brighter().brighter().brighter(), 0, getHeight(), 
      getBackground().darker()); 
     g2d.setPaint(gp); 
     g2d.fillRect(0, 0, getWidth(), getHeight()); 
     super.paintComponent(grphcs); 
    }}; 

如何獲取放置在工具欄中的按鈕的漸變顏色?

回答

2

該按鈕具有contentAreaFilled屬性,該屬性確定外觀是否應繪製按鈕的內容區域。當您致電super.paintComponent時,外觀和感覺委託人會畫出您所做的事情。

您可以將此屬性設置爲false,然後它應該可以工作。

例如...

RoundButton

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.GradientPaint; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.GridBagLayout; 
import java.awt.RenderingHints; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class GradientButtons { 

    public static void main(String[] args) { 
     new GradientButtons(); 
    } 

    public GradientButtons() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new GridBagLayout()); 
       frame.add(new RoundButton("Click me")); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class RoundButton extends JButton { 

     public RoundButton(String text) { 
      super(text); 
      setBorderPainted(false); 
      setContentAreaFilled(false); 
      setFocusPainted(false); 
      setOpaque(false); 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      Dimension size = super.getPreferredSize(); 
      int radius = Math.max(size.width, size.height); 
      size.width = radius; 
      size.height = radius; 
      return size; 
     } 

     @Override 
     protected void paintComponent(Graphics g) { 
      Graphics2D g2d = (Graphics2D) g; 
      g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
        RenderingHints.VALUE_ANTIALIAS_ON); 
      GradientPaint gp = new GradientPaint(0, 0, 
        Color.RED, 0, getHeight(), 
        Color.YELLOW); 
      g2d.setPaint(gp); 
      g2d.fillOval(0, 0, getWidth(), getHeight()); 
      super.paintComponent(g); 
     } 

    } 

} 

您可能要檢查ButtonModelarmed和/或pressed狀態,所以你也可以更改按鈕被塗的方式點擊時,作爲一個建議...