【问题标题】:Frame doesn't show in full-screen框架不全屏显示
【发布时间】:2012-09-17 18:24:34
【问题描述】:

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

这是我使用的代码:

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

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

感谢大家的帮助

【问题讨论】:

  • 来自参考,可以在here 找到有效的sscce
  • 框架确实全屏显示,您只需在其中绘制一个彩色矩形...
  • 非常感谢!! sscce 把我从坑里救了出来

标签: java swing jpanel fullscreen paint


【解决方案1】:

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

这部分框架代码:

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. 先试试没有全屏窗口的框架,看看是否能显示你需要的内容

【讨论】:

    【解决方案2】:

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

    JFrame 扩展自 Window

    所以,不要说

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

    你只需要使用

    gs.setFullScreenWindow(frame);
    

    哦,还有 Mikle 所说的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      相关资源
      最近更新 更多