好吧, 我对 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 (您为其设置了背景)。您可以将 ButtonsPanel
的 opaque
属性设置为 false
或将背景设置为 ButtonsPanel
。
为什么会发生这种情况
内容 Pane 默认有一个 BorderLayout
。 BorderLayout
将拉伸(stretch) ButtonPanel
以适应其大小。如果您要将内容 Pane /框架的布局管理器更改为 FlowLayout(这将不会拉伸(stretch)面板),您将看到背景。
其他说明:
FrameObject.CreateFrame(); FrameObject.AddPanel();
。这将在添加组件之前将框架设置为可见。通常,您要添加组件,然后将框架设置为可见。遵循 Java 命名约定。方法名和变量名以小写字母开头。
Swing 程序应在事件调度线程 (EDT) 上启动。请参阅Initial Threads
关于java - JFrame 背景颜色不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26228358/