单击时透明JButton变成浅蓝色

时间:2019-05-28 02:35:01

标签: java swing jbutton transparency

我试图制作透明的JButton(带有可见的文本),但是单击按钮时,背景变成浅蓝色。 (不要介意代码中的缩进。所有缩进都正确)

我使按钮成功透明了,但是我担心问题可能是因为我将所有JButton添加到了JLabel(背景图像)中。

    JButton play = new JButton("Play");
    JButton quit = new JButton("Quit");
    JButton instructions = new JButton("Instructions");

    Color invs = new Color(0,0,0,0);

    play.setBackground(invs);
    quit.setBackground(invs);
    instructions.setBackground(invs);

    play.setBorderPainted(false);
    //play.setMargin(new Insets(0,0,0,0));
    play.setRolloverEnabled(false);
    play.setFocusable(false);
    play.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

    instructions.setBorderPainted(false);
    //instructions.setMargin(new Insets(0,0,0,0));
    instructions.setRolloverEnabled(false);
    instructions.setFocusable(false);

   instructions.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

    quit.setBorderPainted(false);
    //quit.setMargin(new Insets(0,0,0,0));
    quit.setRolloverEnabled(false);
    quit.setFocusable(false);
    quit.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));


    instructions.setForeground(Color.WHITE);
    play.setForeground(Color.WHITE);
    quit.setForeground(Color.WHITE);

1 个答案:

答案 0 :(得分:1)

Color invs = new Color(0,0,0,0);

不要使用透明的Color来尝试设置任何Swing组件的背景。使用透明颜色时,Swing无法正确绘制组件。

通常使用:

setOpaque( false );

当您希望任何Swing组件具有完全透明性时。

但是,对于JButton,您还需要:

setContentAreaFilled( false );

防止单击时绘制按钮背景。

如果您想要部分透明,请查看Backgrounds With Transparency以获得解决方案。