我有一个问题:
我正在 JFrame 中渲染 BufferedImage。然后我将一个 JButton 添加到同一帧。 当我尝试使按钮透明时,按钮变得透明,但不管它的实际位置如何,它总是透明的,就像它卡在框架的左上角一样。 我测试了一些使按钮透明的不同方法,结果总是相同。
有什么想法吗?
谢谢
public class TestPanel extends JPanel {
public TestPanel(){
JButton foo = new JButton("test");
foo.setBackground(new Color(0, 0, 0, 0));
foo.setBounds(20, 100, 300, 50);
this.add(foo);
}
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(ImageFactory.getImg(), 0, 0, null); //get a BufferedImage
g2.dispose();
}
最佳答案
我看到了几个问题,即使我不确定是哪一个导致了你的问题。我试着按顺序列出它们:
- 您的
TestPanel
没有指定LayoutManager
(我希望您在代码的其他地方指定了它)。 您正在扩展
JPanel
,但没有调用 super paintComponent 方法(不要使用 paint)。你应该在你的 paintComponent 方法中做任何其他事情之前这样做:public void paintComponent(Graphics g){ super.paintComponent(g); }
删除 dispose 方法调用。您不得破坏您的图形对象。
编辑:
这是一个问题:
foo.setBounds(20, 100, 300, 50);
您正在尝试显式设置 JButton 的边界。你不应该那样做。如果您使用的是 LayoutManager,它可能会忽略此指令。如果您使用的是空布局,这也可能是个问题。
关于java - BufferedImage 上的 JButton 透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7385573/