我的标题有点混乱,所以我会尽力解释。我想要做的是在我的应用程序中有一个背景图像,它在顶部中心保持静态(例如,在 x 轴的中心,在 y 轴的顶部)。即使重新调整 JFrame 的大小,我也想要这个。但是,在该图像下方,我希望我制作的图案可以重复到足以适合窗口大小。
我想到了几种方法来做到这一点(并使用已经回答过的 StackOverflow 问题)来提出一个合乎逻辑的解决方案。(我说合乎逻辑是因为它实际上不起作用。)
我会用这个 -
JPanel panel = new JPanel();
panel.getContentPane(backgroundImage);
panel.setSize(400, 400); // JFrame arbitrary size.
panel.getContentPane().setLayout(null);
panel.setVisible(true);
int panelX = (panel.getWidth() - panel.getWidth() - panel.getInsets().left - panel.getInsets().right) / 2;
panel.setLocation(panelX, 0);
这基于此解决方案 -在 JFrame 中居中 JPanel
这段代码的问题是当我尝试使用 getContentPane(); 时出现错误。(错误是“方法 getContentPane() 未为 JPanel 类型定义”。)
在该 JPanel 下方,我将拥有另一个 JPanel,其代码如下 -
BufferedImage titledImageFile = ImageIO.read(new File(IMAGE_PATH_TILED));
TiledImage test = new TiledImage(tiledImageFile);
public void paintComponent(Graphics g) {
int width = getWidth();
int height = getHeight();
int imageW = tileImage.getWidth(this);
int imageH = tileImage.getHeight(this);
// Tile the image to fill our area.
for (int x = 0; x < width; x += imageW) {
for (int y = 0; y < height; y += imageH) {
g.drawImage(tileImage, x, y, this);
}
}
}
希望我的问题很清楚;我是以正确的方式解决这个问题,还是我应该做其他事情?此外,如何让 JFrame 使用它?
最后,如果这个问题被否决,请留下一个解释,以便我可以修复/防止它在未来发生。