Прозрачный JButton - PullRequest
       7

Прозрачный JButton

41 голосов
/ 03 января 2011

Можно ли сделать JButton прозрачным (включая границу), но не текст? Я расширяю свинг 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();
}

но это делает все прозрачным, включая текст. Спасибо.

Ответы [ 2 ]

106 голосов
/ 03 января 2011
button.setOpaque(false);
button.setContentAreaFilled(false);
button.setBorderPainted(false);
11 голосов
/ 03 января 2011

Следующее должно сделать трюк.

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