0

我在全屏时遇到了问题:我创建了一个框架并将其放在全屏窗口中,但我只看到框架背景的颜色。

这是我使用的代码:

PB frame = new PB();

win = new Window(frame);

gs.setFullScreenWindow(win);

frame.setVisible(true);
frame.repaint();

win.repaint();

和 PB 类,我的框架:

 public class PB extends JFrame
{
    PB()
    {
        super();
        this.setBackground(Color.BLUE);
        this.getContentPane().add(new JButton("button"));
        JPanel jp = new JPanel();
        jp.setBackground(Color.red);
        jp.setSize(360, 200);
        this.getContentPane().add(jp);
        this.setVisible(true);
        repaint();
        pack();
    }
    @Override
    public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D)g;
        g2d.setPaint(new Color(0,0,0));
        g.fillRect(0,0,200,200);
    }
}

所以我所能看到的,是一个带有背景颜色的大屏幕(这里是蓝色);

感谢所有帮助

4

2 回答 2

3

我敢打赌你没有单独尝试你的框架,是吗?

这部分帧代码:

public void paint(Graphics g)
{
    Graphics2D g2d = (Graphics2D)g;
    g2d.setPaint(new Color(0,0,0));
    g.fillRect(0,0,200,200);
}

永远不会让它绘制自己的内容,只是彩色矩形。

所以我的建议是:

  1. 不要覆盖JFrame的paint方法——它会导致很多问题
  2. 只需将主容器面板背景设置为所需的颜色
  3. 先试试没有全屏窗口的框架,看看是否显示你需要的
于 2012-09-17T10:08:42.430 回答
2

我认为您误解了“所有者”的目的Window

JFrame从 延伸Window

所以,而不是说

win = new Window(frame);
gs.setFullScreenWindow(win);

你只需要使用

gs.setFullScreenWindow(frame);

哦,还有米克尔所说的。

于 2012-09-17T10:24:34.883 回答