最近、数週間前に Java GUI を使い始めましたが、調整に苦労しています。基本的に、背景画像 (トップバーとコンテンツ) が異なる 2 つのパネルを作成しようとしており、それらを順番に並べたいと考えています。問題は、背景画像が元のサイズを失い、非常に小さくなるため、BorderLayout.NORTH
使用できないことです。BorderLayout.SOUTH
元のサイズを失うことなく、それらを正しく配置するにはどうすればよいですか?
これが私のコードです:
package main;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ImageTest {
public static void main(String[] args) {
ImageFrame frame = new ImageFrame("topBar.png", "contentImage.png");
frame.setSize(640,480);
frame.setVisible(true);
}
}
class ImagePanel extends JPanel {
private Image img;
public ImagePanel(String img) {
this(new ImageIcon(img).getImage());
}
public ImagePanel(Image img) {
this.img = img;
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
class ImageFrame extends JFrame {
public ImageFrame(String topBar, String body) {
setLayout(new BorderLayout());
ImagePanel topPanel = new ImagePanel(topBar);
ImagePanel bodyPanel = new ImagePanel(body);
add(topPanel, BorderLayout.NORTH);
add(bodyPanel, BorderLayout.SOUTH);
pack();
}
}