透明 JButton

2022-09-01 00:43:40

是否可以使 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();
}

但它使所有内容都透明,包括文本。谢谢。


答案 1
button.setOpaque(false);
button.setContentAreaFilled(false);
button.setBorderPainted(false);

答案 2

以下操作应该可以解决问题。

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

推荐