Java JPanel有时会在启动程序后移到左上角
在我的程序中,我使用JFrame并通过Java JPanel有时会在启动程序后移到左上角,java,swing,jpanel,Java,Swing,Jpanel,在我的程序中,我使用JFrame并通过setContentPane()将其内容窗格设置为JPanel。有时JPanel会向左上移动大约10到15个像素,因此在右侧和底部是白色区域 我测试了面板的位置、大小和插图,但它们都是相同的,没有问题 public class Window extends JFrame { private static final long serialVersionUID = 1L; private DrawPanel dp; public
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;
}
}
上图显示了问题所在,下图显示了问题所在:
我希望你能理解我的问题并能帮助我。谢谢好的,多亏了他的评论,我终于解决了我的问题。我在
SwingUtilities
中使用了invokeAndWait
方法。现在JFrame和JPanel在事件调度线程上运行,问题不再出现
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();
}
});
谢谢。
请提供。考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将导致更少的混乱和更好的响应调用setresizeable(false)
后跟path
或setSize
,setresizeable
将更改某些平台上框架装饰的大小我尝试调用setresizeable(false)代码>设置大小之前,但问题仍然存在。顺便问一下,使用Windows。那么上面的图片和下面的图片有什么区别呢?你让它正常工作一次,所以找出区别并修复它。由于您没有按照要求发布两次代码,我们无法提供真正的帮助。