繁体   English   中英

窗口右下角的空白

[英]White space at the right and bottom edge of the window

创建完一个窗口后,该窗口应该完全是黑色的,在右侧和底部边缘都有白色。 我可能做错了什么?

这是我初始化window的构造函数:

    public Panel()
    {
        Thread t = new Thread(this);
        addKeyListener(this);
        setFocusable(true);
        this.setPreferredSize(new Dimension(gameWidth, gameHeight));
        JFrame f = new JFrame("AlienBusters");
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setResizable(false);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
        t.start();
    }

这是使窗口变黑的绘制方法:-

    @Override
    public void paintComponent(Graphics g)  
    {
        super.paintComponent(g);
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, gameWidth, gameHeight);
    }

五件事

  1. pack之后调用setResizable并不是一个好主意, setResizable可以更改框架边框的大小,这会影响可用内容的大小。
  2. 认真使用KeyListener ,请参阅如何使用按键绑定并节省头痛...
  3. g.fillRect(0, 0, gameWidth, gameHeight);依赖于幻数而不是英制值g.fillRect(0, 0, gameWidth, gameHeight); 应该是g.fillRect(0, 0, getWidth(), getHeight()); 或者更好,只需使用setBackground(Color.BLACK)并通过super.paintComponent免费获得它,并且paintComponent应该受到protected ;)
  4. 调用setPreferredSize 这意味着可以更改大小,这可能不是您真正想要的。 而是改写getPreferredSize 请参阅我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗? 更多细节
  5. 在组件的构造函数中构造一个框架,该组件不必关心它如何显示,而应该专注于它的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM