【问题标题】:java swing - set background to the panel and all of the panels insidejava swing - 为面板和里面的所有面板设置背景
【发布时间】:2012-06-07 06:07:43
【问题描述】:

我有一个 jpanel 和内部 jpannels。
当我动态设置面板背景时,内部颜色不会改变。
初始化:

 myPanel.setOpaque(true)

然后

 myPanel.setBackground(...)

有没有一种解决方案可以在不循环或直接设置的情况下为所有内框设置背景?
谢谢。

【问题讨论】:

    标签: java swing transparency jpanel


    【解决方案1】:

    不,但如果您将内面板设置为不透明(透明),您可以直接更改外面板:

    inner.setOpaque(false);
    

    你总是可以创建一个你可以使用的类来代替JPanel

    class TransparentJPanel extends JPanel {
        {
            setOpaque(false);
        }
    }
    

    完整示例:

    static class TransparentJPanel extends JPanel {{
        setOpaque(false);
    }}
    
    public static void main(String... args) throws Exception {
    
        JFrame frame = new JFrame("Test");
    
        final JPanel panel;
    
        frame.add(panel = new JPanel() {{
            add(new TransparentJPanel());
            add(new TransparentJPanel());
            add(new TransparentJPanel());
        }}, BorderLayout.CENTER);
    
        frame.add(new JButton(new AbstractAction("Toggle") {
    
            @Override
            public void actionPerformed(ActionEvent e) {
                if (panel.getBackground().equals(Color.RED))
                    panel.setBackground(Color.GREEN);
                else
                    panel.setBackground(Color.RED);
            }
        }), BorderLayout.SOUTH);
    
    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
    

    【讨论】:

    • 所以我设置了内部 jpanel opaque=false ,外部 opaque=true 但仍然没有变化
    • 你试过我提供的例子了吗,它的表现和你喜欢的一样吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多