Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法,如果我设置JPanel的宽度和高度(900x900),JPanel内部的图像也将是(900x900)_Java_Swing - Fatal编程技术网

Java 有没有办法,如果我设置JPanel的宽度和高度(900x900),JPanel内部的图像也将是(900x900)

Java 有没有办法,如果我设置JPanel的宽度和高度(900x900),JPanel内部的图像也将是(900x900),java,swing,Java,Swing,有没有办法,如果我设置JPanel的宽度和高度(900x900),JPanel内部的图像也将是(900x900) 实际上,我对Java编程非常陌生。我用原始Java编码制作了一个游戏。完成编码后,游戏运行良好。但问题是,我已经将游戏的背景设置为图像大小(900x900),一些游戏组件也设置为默认大小的图像。现在900x900 JPanel的高度和宽度非常适合我,因为我的显示器分辨率是(1980x1080)。因此,如果有人在其他显示器分辨率为(1366X768)的PC上运行我的游戏,我的游戏将因高

有没有办法,如果我设置JPanel的宽度和高度(900x900),JPanel内部的图像也将是(900x900)

实际上,我对Java编程非常陌生。我用原始Java编码制作了一个游戏。完成编码后,游戏运行良好。但问题是,我已经将游戏的背景设置为图像大小(900x900),一些游戏组件也设置为默认大小的图像。现在900x900 JPanel的高度和宽度非常适合我,因为我的显示器分辨率是(1980x1080)。因此,如果有人在其他显示器分辨率为(1366X768)的PC上运行我的游戏,我的游戏将因高度超出屏幕。我可以改变我的JPanel高度和宽度,但这不会改变背景图像或其他游戏组件图像的大小


因此,我如何解决这个问题,以便每当我重新调整JFrame的大小或设置不同的JPanel高度和宽度时,我的游戏组件图像将自动重新调整到适当的大小。否则,我必须制作所有新的小型游戏组件、背景图像和新的像素移动修改。

请提供更多细节。对于我所了解的,您希望缩放绘制的图像吗?为此,您可以覆盖面板中的paint(Graphics g)方法, 并计算新尺寸的比例因子

然后打电话:

Graphics2D g2d = (Graphics2D) g;
g2d.setScale(scale,scale);
super.paint(g2d)

它会画出所有的东西,但会按比例缩放。也许这会对您有所帮助?

可以缩放整个绘图区域,以适应面板的任何空间(通过顶层容器的布局和大小-它所在的框架)。这样做是否有意义是另一回事。另外请注意,这不会缩放,例如,游戏区域中的鼠标事件,或出现在其中的任何组件(如任何
JComponent
或其子组件)。。。请参阅该方法的最简单实现。我意识到,实际上,移动的组件按我给它的默认像素移动,如果我仍然缩放图像,组件按相同的像素移动,所以我想我需要重新更改。但是非常感谢。你能给我一些建议吗?这样我以后就可以避免此类问题,这样我的游戏组件就不需要通过默认像素来移动了。1)为了更快地获得更好的帮助,请发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。2) 例如,获取图像的一种方法是热链接到中看到的图像。3) 提示:添加@Newd(或任何人,
@
很重要)以通知此人新的评论。“为此,您可以覆盖面板中的paint(Graphics g)方法”如果您的意思是
paintComponent(Graphics g)
&
JPanel
,那么是的。还要注意Swing标记,AWT通常需要传递一个实际的
Graphics
对象,而Swing GUI需要一个
Graphics2D
对象(具有
scale(sx,sy)
方法)。另外,如果你选择,请注意“understund”应该是“understund”(一个“u”,而不是两个)。我意识到,实际上,移动的组件在默认像素下移动,我给了它,如果我仍然缩放图像,组件移动相同的像素,所以我想我需要重新改变。但是非常感谢你的建议。你能给我一些建议,这样我以后就可以避免这种问题,这样我的游戏组件就不需要通过默认像素来移动了。