web-dev-qa-db-ja.com

透明なJButton

JButtonを(ボーダーを含めて)透明にすることはできますが、テキストはできませんか? swingの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();
}

しかし、それはテキストを含むすべてを透明にします。ありがとう。

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

以下はトリックを行う必要があります。

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