在我的程序中,我使用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;
}
}
上图是应该如何,下图显示问题:
我希望你能理解我的问题,并能帮助我。谢谢
答案 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。