Java Swing 表格的透明度

4

我想改变JTable的透明度,以便查看单元格后面的内容,就像查看照片一样。这是可行的吗?


2
你目前尝试了什么?你是否尝试过操作这个Swing组件的不透明度 - Moonbeam
我认为你可以对回答你问题的人进行评论,我拒绝你对@Jakub Zaverka的回答所做的编辑。 - mKorbel
3个回答

5
可以通过在JTable和TableCellRenderer上使用setOpaque(false)来实现此目的。下面的代码生成了截图:
代码:
请注意,保留的HTML标记不应该被翻译。
public static void main(String[] args) throws MalformedURLException, IOException{
    final BufferedImage image = ImageIO.read(new URL(
                  "http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png"));

    JFrame frame = new JFrame("Test");

    frame.add(new JTable(18, 5) {{
            setOpaque(false);
            setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {{
                setOpaque(false);
            }});
        }
        @Override
        protected void paintComponent(Graphics g) {
            g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
            super.paintComponent(g);
        }
    });
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

3

您可以设置背景颜色具有一些透明度组件:

Color backgound = new Color(0, 0, 0, 255) //total transparency

如果您需要更多帮助,想要实现的目标,请发布一个SSCCE


楼主编辑了你的问题,如下所示:这个答案可以自己着色单元格,但我也尝试了table.setOpaque(false);并且没有起作用,我看不到表格后面的内容。 - mKorbel
你使用了哪种LayoutManager?你在表格后面显示什么?你想要多少透明度?是整个表格还是只有它的背景?那么单元格呢?除非你发布更多相关信息,否则我们无法再为你提供帮助。请发布一个包含问题的简短示例。 - Jakub Zaverka
我有一个带有图像背景的JFrame,我想将JTable添加到JFrame中,并在表格单元格后面看到图像。 - user1278440
整个表格不透明还是只有单元格不透明?但我恳求您,发布代码,否则这将永远持续下去。 - Jakub Zaverka

1

我尝试了这个答案:

Color backgound = new Color(0, 0, 0, 255) //total transparency

但它没有起作用。以下内容有效:
Color backgound = new Color(0, 0, 0, 0) //total transparency

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接