java - 无法更改背景 JFrame

标签 java swing

我已经尝试了 this 中的所有内容帖子,但我似乎无法更改背景颜色。我做错了什么,以至于它不会改变背景颜色?

调用DrawGui的主类:

public class JavaApp {
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
        }

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                DrawGui.createAndShowGUI("");
            }
        });
    }
}

Gui 构建类:

public class DrawGui extends JFrame {
    public DrawGui(String name) {
        super(name);
        setResizable(false);
    }

    public static void createAndShowGUI(String type) {        
        DrawGui frame = new DrawGui("Java App");

        frame.getContentPane().setBackground(Color.RED);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.defaultMenu(frame.getContentPane());
        frame.pack();
        frame.setVisible(true);
    }

    public void defaultMenu(final Container pane) {
        JPanel infoBox = new JPanel();
        infoBox.setLayout(new GridLayout(1,2));

        infoBox.add(new Label("Benutzer: " + GlobalValues.USERNAME));
        infoBox.add(new Label("Version: " + GlobalValues.VERSION_NUMBER));

        pane.add(infoBox, BorderLayout.SOUTH);
    }
}

最佳答案

您的代码现在有两个问题。首先,您添加到内容 Pane 的 JPanel 是不透明的,这意味着它将遮挡 JFrame 的背景。因此,要么设置它的颜色,要么使用 setOpaque false。

如果您使用setOpaque,那么您会遇到一个问题,即Label本身会遮挡背景。将它们替换为正确的 Swing 组件 (JLabel),问题就会消失。像这样混合使用 Swing 和 AWT 组件通常不是一个好主意。

关于java - 无法更改背景 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35654134/

相关文章:

java - 在 JPanel 上滑动视口(viewport)

java - 无法让 JSOUP 保留 cookie

java - 找不到参数的方法实现()

Java 文本字段焦点

java - JPanel 消耗整个 JFrame

java - 如何使图像大小适合 JFrame 大小?

java - JTabbedPane 缩进

java最快的SSD并发随机文件读/写方法,无需内存交换

java - 如何避免通过 Android DownloadManager 下载损坏?

java - JavaFX 总是使用像素吗?