要在JPanel上显示图像,调用了哪几个要害的类方法? 经过Debug,总结如下:
无论选择按钮或菜单来触发事件,打开图像文件
分别调用的方法依次是
按钮或菜单的事件处理方法(ButtonOpen_mouseClicked())-> 自定义的加载方法(loadMyImage()) -> Graphics对象的drawImage()-> JPanel的imageUpdate() -> JPanel的repaint()
以下代码仅是示例,不完全
void ButtonOpen_mouseClicked(MouseEvent e) { panel.loadChemImg(imageFile.getAbsolutePath()); }
public void loadMyImage(String s) { originalImage = Toolkit.getDefaultToolkit().getImage(s); if (ibuff == null) { init_buff(); } buffgra.drawImage(originalImage, 0, 0, this); //这里会调用imageUpdate() }
public boolean imageUpdate(Image originalImage, int flags, int x, int y, int w, int h) { Color col; if (flags == ImageObserver.ALLBITS) { col = buffgra.getColor(); buffgra.setColor(Color.white); buffgra.fillRect(0, 0, getWidth(), getHeight()); buffgra.drawImage(originalImage, 0, 0, this); buffgra.setColor(col); repaint(); //完全加载后返回false,防止再次调用 return false; } return true; }
|