帧不以全屏显示

时间:2012-09-17 09:44:02

标签: java swing jpanel fullscreen paint

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

这是我使用的代码:

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);
    }
}

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

感谢您的帮助

2 个答案:

答案 0 :(得分: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的绘制方法 - 这会导致很多问题
  2. 只需将主容器面板背景设置为所需的颜色
  3. 即可
  4. 首先尝试没有全屏窗口的框架以查看它是否显示您需要的内容

答案 1 :(得分:2)

我认为你错误地理解了Window的“所有者”的目的。

JFrameWindow延伸。

所以,而不是说

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

您只需要使用

gs.setFullScreenWindow(frame);

哦,米克尔也说了。