Java 如何在JPanel中居中对齐背景图像

Java 如何在JPanel中居中对齐背景图像,java,swing,jframe,jpanel,background-image,Java,Swing,Jframe,Jpanel,Background Image,我想将背景图像添加到我的JFrame 背景图像意味着我以后可以在JFrame或JPanel 虽然我找不到如何将背景图像添加到JFrame, 我从这里了解了如何将背景图像添加到JPanel: 这解决了我的问题,但现在由于我的JFrame可以调整大小,我希望将图像保持在中间。 我找到的代码使用这个方法 public void paintComponent(Graphics g) { //Draw the previously loaded image to Component. g.d

我想将背景图像添加到我的
JFrame

背景图像意味着我以后可以在
JFrame
JPanel

虽然我找不到如何将背景图像添加到
JFrame

我从这里了解了如何将背景图像添加到
JPanel

这解决了我的问题,但现在由于我的
JFrame
可以调整大小,我希望将图像保持在中间。
我找到的代码使用这个方法

public void paintComponent(Graphics g) { //Draw the previously loaded image to Component.  
    g.drawImage(img, 0, 0, null);   //Draw image
}  
有人能说出如何将图像与
JPanel
的中心对齐吗
As
g.drawImage(img,0,0,null)提供x=0和y=0
另外,如果有一种方法可以将背景图像添加到
JFrame
中,那么我想知道。

谢谢。

假设有一个合适的
图像
,您可以像这样将其居中放置:

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    int x = (this.getWidth() - image.getWidth(null)) / 2;
    int y = (this.getHeight() - image.getHeight(null)) / 2;
    g2d.drawImage(image, x, y, null);
}
如果希望其他组件随背景移动,可以更改图形上下文的仿射变换以保持图像居中,如包含旋转的更完整部分所示

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.translate(this.getWidth() / 2, this.getHeight() / 2);
    g2d.translate(-image.getWidth(null) / 2, -image.getHeight(null) / 2);
    g2d.drawImage(image, 0, 0, null);
}

回顾一下,我发现第一个示例对
Graphics2D
的转换并不是严格要求的,尽管它是针对第二个示例的。