好的, 我对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();
}
}
答案 0 :(得分:1)
您的ButtonsPanel
正在掩盖框架的内容窗格(您将其设置为背景)。您可以将ButtonsPanel
的{{1}}属性设置为opaque
,也可以将背景设置为false
。
为什么会发生这种情况
默认情况下,内容窗格为ButtonsPanel
。 BorderLayout
会延长BorderLayout
以适合它的大小。如果您要将内容窗格/框架的布局管理器更改为FlowLayout(不拉伸面板),您将看到背景。
其他说明:
ButtonPanel
。这将在添加组件之前将框架设置为可见。通常,您希望添加组件,然后将框架设置为可见。
遵循Java命名约定。方法名称和变量名称以小写字母开头。
应该在Event Dispatch Thread(EDT)上启动Swing程序。请参阅Initial Threads