窗口右下边缘的白色空间

时间:2014-12-11 06:06:50

标签: java swing awt paintcomponent

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

这是我初始化窗口的构造函数: -

    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 个答案:

答案 0 :(得分:2)

五件事......

  1. setResizable之后调用pack,不是一个好主意,setResizable可以更改框架边框大小,这会影响可用内容大小......
  2. 认真地使用KeyListener,请How to Use Key Bindings并保存自己的头痛......
  3. 依靠幻数而非神奇值,g.fillRect(0, 0, gameWidth, gameHeight);应为g.fillRect(0, 0, getWidth(), getHeight());或更好,只需使用setBackground(Color.BLACK)并通过super.paintComponent免费获取... {和{ {1}}应为paintComponent;)
  4. 致电protected。这意味着可以改变尺寸,这可能不是你真正想要的。相反,请改写setPreferredSize。有关详细信息,请参阅Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?
  5. 在组件的构造函数中构造一个框架,组件不应该关心它将如何显示,它应该只关注它的工作。
相关问题