ボタンファイルダイアログボックスを開き、特定のラベルに表示する画像を選択します。rcpとswt/jfaceコンポーネントを使用して、ボタンでクリックしてラベル内に画像を動的に追加する方法
ラベルコントロール では、選択したイメージを使用して絶対パスまたは相対パスを設定しようとしましたが、動的に正しく動作しません。
ですので、私の質問にお答えください。
ボタンファイルダイアログボックスを開き、特定のラベルに表示する画像を選択します。rcpとswt/jfaceコンポーネントを使用して、ボタンでクリックしてラベル内に画像を動的に追加する方法
ラベルコントロール では、選択したイメージを使用して絶対パスまたは相対パスを設定しようとしましたが、動的に正しく動作しません。
ですので、私の質問にお答えください。
のJava SWTロードとボタンのFileDialogボックスを開くためにクリックして、特定のラベルに表示する任意の画像を選択し
動的
で を表示するには画像やエディタのサイズを変更します。
ImageLoaderクラスから画像を読み込むと、ファイルまたはストリーム
ImageDataをクラスを画像を保存するために使用されている画像
SWTの画像クラスのデバイスに依存しない記述GUIで画像を表示するのに使用できます。
package rcp_demo.Editor;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
public class ProductEditor extends EditorPart {
public static final String ID="rcp_demo.Editor.product";
private Text text;
private CLabel lbl_image_text;
private static final String[] FILTER_NAMES = {
"Images(*.jpg)","Images(*.jpeg)","Images(*.png)","All Files (*.*)"};
// These filter extensions are used to filter which files are displayed.
private static final String[] FILTER_EXTS = { "*.jpg", "*.jpeg", "*.png", "*.*"};
public void createPartControl(final Composite parent) {
parent.setLayout(null);
//Layout with absolute positioning components.
text = new Text(parent, SWT.BORDER);
text.setBounds(25, 57, 169, 19);
Button btnOpen = new Button(parent, SWT.NONE);
btnOpen.setText("open");
btnOpen.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.OPEN);
dialog.setFilterNames(FILTER_NAMES);
dialog.setFilterExtensions(FILTER_EXTS);
String result = dialog.open();
if(result!=null)
{
text.setText(result);
Image image=SWTResourceManager.getImage(result);
ImageData imgData = image.getImageData();
imgData=imgData.scaledTo(200, 200);
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[] {imgData};
imageLoader.save(result, SWT.IMAGE_COPY);
System.out.println(imgData.width+"....."+imgData.height);
lbl_image_text.setBounds(25,88,imgData.width+10,imgData.height+10);
//Image size set to Label
//lbl_image_text.setBounds(25,88,image.getBounds().width+10,image.getBounds().height+10);
lbl_image_text.setImage(SWTResourceManager.getImage(result));
}
}
});
btnOpen.setText("open");
lbl_image_text = new CLabel(parent, SWT.Resize);
}
}
CLabelクラスは、Labelクラスよりも高度な機能を提供します。 このクラスは、テキストラベルとイメージラベルを同時に表示できます。
lbl_image_text.setText("Welcome");
lbl_image_text.setImage(SWTResourceManager.getImage("Image Path"));
['Layout's](http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/ index.html)。絶対的なポジショニング/サイジングは、最終的にあなたを困らせてしまいます。 – Baz
@Baz絶対配置コンポーネントを使用したレイアウト..設定レイアウトデザイン時間(EditorPartを拡張)..ありがとう –
あなたが今までに試したことと、正確にどこにいるのかを示してください。 –
@RüdigerHerrmann私はこの解決策を見つけました...事前に感謝 –