我正在研究一些简单的应用程序来熟悉 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);
}
}
但是,在直接调用 ImageComponent 的同时使用 ImagePanel 或添加 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;
}