タイトルがややこしいので、説明してみます。私がやりたいのは、アプリケーションの背景画像を上部中央に固定したままにすることです (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 をこれで動作させるにはどうすればよいですか?
そして最後に、この質問が反対票を投じられた場合は、説明を残してください。将来的に修正/防止できるようにします。