java - JFrame 背景颜色不显示

标签 java swing jframe jpanel layout-manager

好吧, 我对 awt api 不太熟悉,所以这对我来说是相当新的东西。我从我的主类运行这些方法来创建我的 jframe。在我的 createframe 方法下,背景颜色似乎没有应用于框架。有什么帮助吗?

这是我的框架类

import java.awt.Color;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class FrameClass {

        JFrame frame;

        public FrameClass(String framename) {
                frame = new JFrame(framename);
        }

        public void CreateFrame() {
            Color c = new Color(0,255,0);
            Container con = frame.getContentPane();
            con.setBackground(c);
            frame.getContentPane().setBackground(c);
                frame.setSize(400, 250); // Set the JFrame size when it is on the login screen
                frame.setLocationRelativeTo(null); // Center the JFrame

                /* Display the frame */
                frame.setVisible(true);
        }

        public void AddPanel() {
                JPanel ButtonsPanel = new JPanel();
                ButtonsPanel.setVisible(true);
                frame.add(ButtonsPanel);
        }
}

这是我的主课

public class Admin {

    public static FrameClass FrameObject = new FrameClass("ITWebKit Admin Panel");
    public static Database DatabaseObject = new Database();

    public static void main(String args[]) {
        FrameObject.CreateFrame();
        FrameObject.AddPanel();
    }
}

最佳答案

您的 ButtonsPanel 覆盖了框架的内容 Pane (您为其设置了背景)。您可以将 ButtonsPanelopaque 属性设置为 false 或将背景设置为 ButtonsPanel

为什么会发生这种情况

内容 Pane 默认有一个 BorderLayoutBorderLayout 将拉伸(stretch) ButtonPanel 以适应其大小。如果您要将内容 Pane /框架的布局管理器更改为 FlowLayout(这将不会拉伸(stretch)面板),您将看到背景。

其他说明:

  • FrameObject.CreateFrame(); FrameObject.AddPanel();。这将在添加组件之前将框架设置为可见。通常,您要添加组件,然后将框架设置为可见。

  • 遵循 Java 命名约定。方法名和变量名以小写字母开头。

  • Swing 程序应在事件调度线程 (EDT) 上启动。请参阅Initial Threads

关于java - JFrame 背景颜色不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26228358/

相关文章:

java 命令不会执行我的 .class 文件

java - 如何在 JButton 单击时关闭 JInternalFrame 并显示另一个 JInternalFrame?

java - 如何真正将 JFrame 中的对象居中?

Java Swing - Finder 文本框

java - 将可编辑文本框添加到 JFrame

java - 将变量从一个 jframe 传递到另一个而不关闭它们

java - 我的 ArrayList 平均值不正确

当模式来自类路径时,Java XML 验证不起作用

java - 迭代文件和目录以加载 SWT 树

java 图形用户界面 : while loop and if/else statement