My title is a bit confusing, so I'll try to explain. What I'd like to do is have a background image in my application that stays static in the top center (as in, center on the x axis, and right at the top from the y axis). And I want this even when the JFrame is re-sized. However, underneath that image, I would like a pattern I made to be repeated enough to fit the window size.
I thought of several ways to do this (and used StackOverflow questions that have already been answered) to come up with a logical solution. (I say logical because it doesn't actually work.)
I would use this -
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);
Which is based off of the solution from this - Center a JPanel in a JFrame
The problem I have with this code is that I get an error when I try to use the getContentPane(); (The error is "The method getContentPane() is undefined for the type JPanel".)
And underneath that JPanel, I would have ANOTHER JPanel with the following code -
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);
}
}
}
Hopefully my question is clear; Am I going about this the correct way, or is there something else I should do? Additionally, how do I get the JFrame to work with this?
And finally, if this question is downvoted, please leave an explanation so I can fix/prevent it from happening in the future.