私はいくつかの単純なアプリケーションを使って Swing に慣れ、問題に直面しています。
画像をズームイン/ズームアウトするボタンとともに、(パネル内の) 画像を含むフレームを作成しようとしています。
画像を追加したフレームを正常に動作させることができました (ただし、フレーム サイズの問題はありますが、それは別の話です)。ただし、同じコンポーネント クラスを呼び出してパネルに追加しても、何も表示されません。あなたの一人が状況を明らかにするのを手伝ってくれることを願っています.
コード:
画像フレーム - 示されているように機能しています
class ImageFrame extends JFrame{
public ImageFrame(){
setTitle("Java Image Machine");
init();
pack();
}
public final void init(){
//ZoomPanel zoomPanel = new ZoomPanel();
//ImagePanel imagePanel = new ImagePanel();
ImageComponent component = new ImageComponent();
//this.add(zoomPanel, BorderLayout.CENTER);
this.add(component);
//this.add(imagePanel, BorderLayout.SOUTH);
}
}
ただし、ImagePanel を使用するか、ImageComponent の直接呼び出しと同時に ZoomPanel を追加しても、次のことはできません。
class ImagePanel extends JPanel{
public ImagePanel(){
//setBorder(BorderFactory.createLineBorder(Color.black));
ImageComponent component = new ImageComponent();
add(component);
}
}
コンポーネント クラス:
class ImageComponent extends JComponent{
public ImageComponent(){
try{
image = ImageIO.read(new File("test1.bmp"));
}
catch ( IOException e ){
e.printStackTrace();
}
System.out.println("W: " + image.getWidth(this) + " H: " + image.getHeight(this));
}
public void paintComponent( Graphics g ){
super.paintComponent(g);
if (image == null)
return;
width = image.getWidth(this);
height = image.getHeight(this);
//System.out.println("Image should be painted");
g.drawImage(image, 0, 0, null);
}
private Image image;
public int width;
public int height;
}