我试图制作透明的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);
答案 0 :(得分:1)
Color invs = new Color(0,0,0,0);
不要使用透明的Color来尝试设置任何Swing组件的背景。使用透明颜色时,Swing无法正确绘制组件。
通常使用:
setOpaque( false );
当您希望任何Swing组件具有完全透明性时。
但是,对于JButton,您还需要:
setContentAreaFilled( false );
防止单击时绘制按钮背景。
如果您想要部分透明,请查看Backgrounds With Transparency以获得解决方案。