内にコンポーネントを配置することはできませんImage
。あなたがしたいImage
のは、スイングコンポーネントの背景にペイントすることです(のようにJPanel
)。すべてのswingコンポーネントには、paint()
次の3つのメソッドを呼び出すメソッドがあります(おそらくこの順序ではありません):paintComponent()
、、。そのため、このメソッドをオーバーライドして、パネル上に背景画像をペイントする必要があります。これが実行されると、カスタムメソッドが呼び出され、次にメソッドが呼び出されます。これにより、すべての「子」コンポーネントが背景画像の上にペイントされます。paintChildren()
paintBorder()
paintComponent()
paintChildren()
class BackgroundImagePanel extends JPanel {
public void setBackgroundImage(Image backgroundImage) {
this.backgroundImage = backgroundImage;
}
@Override
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
graphics.drawImage(backgroundImage, 0, 0, this);
}
private Image backgroundImage;
}
BackgroundImagePanel panel = new BackgroundImagePanel();
panel.setBackgroundImage(image);
panel.add(new JTextField("Enter text here..."));
panel.add(new JButton("Press Me"));