1
私はこのような単純な機能にコードを縮小しました。ウィンドウに画像を表示することです。しかし、なぜ私は試しても画像が表示されませんか?私はJFrameを作成し、その画像を表示すると予想されるJPanelを作成しました。次に、パネルをフレームに追加します。ちなみに、私は画像をインポートし、それをダブルクリックしてURLを取得しました。画像がウィンドウに表示されない
import java.awt.*;
import javax.swing.*;
import com.sun.prism.Graphics;
public class GUI {
JFrame frame=new JFrame("My game");
JPanel gamePanel=new JPanel();
public static void main(String[] args){
GUI gui=new GUI();
gui.go();
}
public void go(){
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Background backPic=new Background();
backPic.setVisible(true);
frame.getContentPane().add(backPic);
JPanel contentPane=(JPanel) frame.getContentPane();
contentPane.setOpaque(false);
frame.setVisible(true);
}
class Background extends JPanel{
public void paintComponent(Graphics g){
ImageIcon backgroundIcon=new ImageIcon("file:///E:/eclipse/EL/backgroundPicture.jpg");
Image backgroundPic=backgroundIcon.getImage();
Graphics2D g2D=(Graphics2D) g;
g2D.drawImage(backgroundPic,0,0,this);
}
}
}
新しい方法'paintComponent(com.sun.prism.Graphics) 'を提供し、paintComponent(java.awt.Graphics)をオーバーライドされませんを意味します。 –
@DavidGilbert *「新しいメソッドを提供していることを意味します」*オーバーライドされたメソッドには必ず「@ Override」を指定する必要があります。貨物列車が到着する前に私たちが間違った道を歩いているというコンパイラの警告を得るのは便利です。 –
これは、私も画像をインポートする必要があることを意味していますか?インポートした画像を削除すると、再び表示されません。 "super.paintComponent(g)"の機能は何ですか? – EstellaGu