利用BOS开发单据,偶尔需要在单据上显示图片,现在贴出我的设计思路,其实主要是借鉴EAS中的标准模块。
代码如下:
创建对象:
private PhotoPanel pPanel ;
实例化:
pPanel = new PhotoPanel();
布局
public void onShow() throws Exception {
super.onShow();
this.photoPanel.setLayout(null);
this.photoPanel.add(pPanel);
pPanel.setBounds(0, 0, 182, 100);
}
根据单据状态设置图片面板状态并显示弹出工具栏
this.pPanel.setOprtStat(getOprtState());
if(editData != null && editData.getId() != null){
HotelInfo hotelInfo = HotelFactory.getRemoteInstance().getHotelInfo(new ObjectUuidPK(editData.getId()));
if(UIRuleUtil.isNotNull(hotelInfo.getImageData())){
ByteArrayInputStream bis = new ByteArrayInputStream(hotelInfo.getImageData());
BufferedImage bimage = ImageIO.read(bis);
pPanel.setSelectImage(bimage);
bis.close();
}else{
pPanel.setSelectImage(null);
pPanel.repaint();
}
}
上传并保存
public void storeFields()
{
if(UIRuleUtil.isNotNull(pPanel.getSelectImageBytes())){
editData.setImageData(pPanel.getSelectImageBytes());
}
super.storeFields();
}
注意:需要手动在数据表中新增BLOB字段,在实体上添加自有属性(ByteArray)