我有以下代码,但我的JPanel没有显示。我无法弄清楚为什么。你明白为什么吗?我看到的只是带有黑色背景的JFrame
public class ShapeFrame extends JFrame
{
private JPanel outlinePanel;
public ShapeFrame(LinkedList<Coordinate> list)
{
super("Outline / Abstract Image");
setSize(950, 500);
setLayout(null);
setBackground(Color.BLACK);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel outlinePanel = new JPanel();
outlinePanel.setBackground(Color.WHITE);
outlinePanel.setBorder(null);
outlinePanel.setBounds(50, 50, 400, 400);
add(outlinePanel);
// abstractPanel = new JPanel();
// abstractPanel.setBackground(Color.WHITE);
// abstractPanel.setBounds(500, 50, 400, 400);
// add(abstractPanel);
}
答案 0 :(得分:3)
我得到的只是一个带有白色方块的框架......
您应该使用getContentPane().setBackground()
来设置框架的背景
框架由图层组成。通常,您看到的内容会(在大多数情况下自动添加)到内容窗格中,而内容窗格会覆盖框架。
(借用Java Trails的图片)
因此设置框架的背景“出现”无效。
使用您的代码......
使用getContent().setBackground(...)
这是我用来测试代码的代码......
public class BadLayout01 {
public static void main(String[] args) {
new BadLayout01();
}
public BadLayout01() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
ShapeFrame shapeFrame = new ShapeFrame();
shapeFrame.setSize(525, 525);
shapeFrame.setVisible(true);
}
});
}
public class ShapeFrame extends JFrame {
private JPanel outlinePanel;
public ShapeFrame() {
super("Outline / Abstract Image");
setSize(950, 500);
setLayout(null);
getContentPane().setBackground(Color.BLACK);
// setBackground(Color.BLACK);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel outlinePanel = new JPanel();
outlinePanel.setBackground(Color.WHITE);
outlinePanel.setBorder(null);
outlinePanel.setBounds(50, 50, 400, 400);
add(outlinePanel);
// abstractPanel = new JPanel();
// abstractPanel.setBackground(Color.WHITE);
// abstractPanel.setBounds(500, 50, 400, 400);
// add(abstractPanel);
}
}
}