启动程序后,JPanel有时会移到左上角

时间:2015-10-16 21:21:32

标签: java swing jpanel

在我的程序中,我使用JFrame并通过setContentPane()将其内容窗格设置为JPanel。有时JPanel会向左上方移动大约10到15个像素,因此右侧和底部都是白色区域。

我测试了面板的位置,大小和插图,但它们都没有问题。

public class Window extends JFrame {

    private static final long serialVersionUID = 1L;

    private DrawPanel dp;

    public Window(int width, int height, String title) {
        dp = new DrawPanel(); // constructor only calls setFocusable(true);

        setResizable(false);
        setSize(width, height);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle(title);
        setLocationRelativeTo(null);
        setContentPane(dp);
        setVisible(true);

        dp.init(); // only initializes a BufferedImage
    }

    public DrawPanel getDrawPanel() {
        return dp;
    }

}

上图是应该如何,下图显示问题:

http://i.stack.imgur.com/jxw26.png

我希望你能理解我的问题,并能帮助我。谢谢

1 个答案:

答案 0 :(得分:0)

好的,由于camickr的评论,我设法解决了我的问题。我在invokeAndWait中使用了SwingUtilities方法。现在JFrame和JPanel在Event Dispatch Thread上运行,问题不再出现了。

SwingUtilities.invokeAndWait(new Runnable() {
    @Override
    public void run() {
        dp = new DrawPanel();

        setResizable(false);
        setSize(width, height);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle(title);
        setLocationRelativeTo(null);
        setContentPane(dp);
        setVisible(true);

        dp.init();
    }
});

谢谢camickr