web-dev-qa-db-fra.com

JButton transparent

Est-il possible de rendre un JButton transparent (y compris la bordure) mais pas le texte? J'étends le JButton de swing et je remplace ceci:

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

mais cela rend tout transparent, y compris le texte. Merci.

41
Rendicahya
button.setOpaque(false);
button.setContentAreaFilled(false);
button.setBorderPainted(false);
106
camickr

Ce qui suit devrait faire l'affaire.

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);
    }
}
11
jjnguy