没有显示的JFrame背景颜色

时间:2014-10-07 04:02:08

标签: 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();
    }
}

1 个答案:

答案 0 :(得分:1)

您的ButtonsPanel正在掩盖框架的内容窗格(您将其设置为背景)。您可以将ButtonsPanel的{​​{1}}属性设置为opaque,也可以将背景设置为false

为什么会发生这种情况

默认情况下,内容窗格为ButtonsPanelBorderLayout会延长BorderLayout以适合它的大小。如果您要将内容窗格/框架的布局管理器更改为FlowLayout(拉伸面板),您将看到背景。

其他说明:

  • ButtonPanel。这将在添加组件之前将框架设置为可见。通常,您希望添加组件,然后将框架设置为可见。

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

  • 应该在Event Dispatch Thread(EDT)上启动Swing程序。请参阅Initial Threads