ボタンに画像を表示しています。ボタンをクリックするとコンポジットが開き、ボタンに使用する別の画像を選択できます。保存アクションの際、以下のコードは画像のサイズを変更し、ディレクトリに保存します。次に、コンポジットをリロードします。コンポジットがロードされると、ボタンは、ユーザーが表示しているレコードのIDに基づいて、デフォルトの場所から画像をプルします。私が抱えている問題は、アプリケーションを閉じてリロードしない限り、ボタンの画像が同じままであるということです。注意すべき興味深い点は、デフォルトのボタン画像が読み込まれると(つまり、そのIDに画像が保存されていない場合)、ボタン画像が正常に変更されるのは初めてです。明確にする必要がある場合は、私の問題を十分に明確に説明したことを願っています。コメントしてください。
---保存ボタンのコード-
Button btnSave = new Button(this, SWT.NONE);
btnSave.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String path = txtPhotoPath.getText();
if (CC_Files.fileExists(path)) {
ArrayList<String> picTypes = new ArrayList<String>();
picTypes.add(".jpg");
picTypes.add(".png");
picTypes.add(".gif");
int t = 0;
for(int i = 0; i < picTypes.size(); i++){
String s = picTypes.get(i);
if(path.contains(s.toUpperCase())){
t++;
}
if(path.contains(s.toLowerCase())){
t++;
}
}
if (t > 0) {
Image image = (Image) SWTResourceManager.getImage(path);
ImageData imgData = image.getImageData();
int intH = image.getBounds().height;
int intW = image.getBounds().width;
int h = (150 * intH) / intW;
int w = 150;
if (h > 150){
h = 150;
w = (150 * intW) / intH;
}
imgData = imgData.scaledTo(w, h);
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[] { imgData };
imageLoader.save(Variables.getStrResources()
+ "Pics\\" + a.getHerd_id() + ".jpg",
SWT.IMAGE_JPEG);
try {
Frm_Animal.setAnimalEditSC(Frm_Animal
.createAnimalComp(a));
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
});
GridData gd_btnSave = new GridData(SWT.LEFT, SWT.CENTER, false, false,
1, 1);
gd_btnSave.widthHint = 60;
btnSave.setLayoutData(gd_btnSave);
btnSave.setText("Save");
---コンポジットでボタンを作成するコード---
Button btnPic = new Button(composite, SWT.CENTER);
btnPic.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
Comp_Add_Photo photo = new Comp_Add_Photo(
scrolledComposite, SWT.FILL, a);
setAnimalEditSC(photo);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
Image image = null;
String strPic = Variables.getStrResources() + "Pics\\" + a.getHerd_id() +".jpg";
if(CC_Files.fileExists(strPic)){
image = (Image) SWTResourceManager
.getImage(strPic);
}else {
image = (Image) SWTResourceManager
.getImage(Variables.getStrResources() + "black_cow.png");
}
btnPic.setImage(image);
btnPic.setToolTipText("Click Here To Add Photo");
GridData gd_btnPic = new GridData(SWT.CENTER, SWT.CENTER, false, false,
1, 7);
gd_btnPic.heightHint = 160;
gd_btnPic.widthHint = 160;
btnPic.setLayoutData(gd_btnPic);