2011-01-03 7 views
36

Czy można ustawić przezroczysty przycisk J (w tym obramowanie), ale nie tekst? Rozszerzam J-kształtny suwak i zastępuję go:Przezroczysty JButton

@Override 
public void paint(Graphics g) { 
    Graphics2D g2 = (Graphics2D) g.create(); 
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0)); 
    super.paint(g2); 
    g2.dispose(); 
} 

, ale powoduje to, że wszystko staje się przezroczyste, łącznie z tekstem. Dzięki.

+0

Po prostu chcesz "JButton" bez tekstu? – jjnguy

+6

Myślę, że chce JButton tylko z tekstem. – jzd

+10

Malowanie niestandardowe (jeśli jest wymagane) odbywa się przez przesłonięcie metody paintComponent(), a nie metody paint(). – camickr

Odpowiedz

98
button.setOpaque(false); 
button.setContentAreaFilled(false); 
button.setBorderPainted(false); 
+1

Ups, moja odpowiedź wygląda podobnie jak Twoja. – jjnguy

+0

Dziękuję i tak. – Rendicahya

+1

setOpaque uratował mi życie :) – Birdy

10

Poniższe powinno wystarczyć.

public class PlainJButton extends JButton { 

    public PlainJButton (String text){ 
     super(text); 
     setBorder(null); 
     setBorderPainted(false); 
     setContentAreaFilled(false); 
     setOpaque(false); 
    } 

    // sample test method 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     JPanel pane = new JPanel(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     pane.add(new PlainJButton("HI!!!!")); 
     frame.add(pane); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
}