利用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)