JFace
二回目ですね。というか2日目!
今日はList構造で遊んでみましょう♪
package jface.sample; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; public class JfaceListViewerSample extends ApplicationWindow { private ListViewer listViewer; public JfaceListViewerSample() { super(null); } public static void main(String[] args) { JfaceListViewerSample window = new JfaceListViewerSample(); window.setBlockOnOpen(true); window.open(); Display.getCurrent().dispose(); } protected Control createContents(Composite parent) { listViewer = new ListViewer(parent, SWT.NONE); for (int i = 0; i < 3; i++) { listViewer.add("ListItem" + i); } return listViewer.getList(); } }
Window作ってList構造を持つListViewerに追加したい文字列をただ入れて表示してるだけですね。
このままじゃ面白くないのでリストにObjectを入れてみましょう。
追加するクラスを簡単に作っておいて
package jface.sample; public class TestObject { private String name_; public TestObject(String name) { name_ = name; } public String toString() { return name_; } public String getName() { return "getName:" + name_; } }
本当に何の変哲もないクラスです^^;
で、先ほどのJfaceListViewerSampleクラスのlistViewer.addの引数に上記で作ったObjectを追加していくように以下のように変更!
ゲッターがあるのは後で使う仕込みw
viewer.add(new TestObject("TestObject" + i));
実行してもらったらわかるようにラベルの部分はtoStringメソッドが呼ばれてます。
toStringを使わなくてもLabelProviderなるものを利用することで表示名は変更できますので、そちらもテスト〜
LabelProviderを継承したクラスを作ってやります。
package jface.sample; import org.eclipse.jface.viewers.LabelProvider; public class TestLabelProviderSample extends LabelProvider { public String getText(Object element) { return ((TestObject) element).getName(); } }
ここで、先ほど仕込んだゲッター登場!
で、メインクラスの中で
listViewer = new ListViewer(parent, SWT.NONE);
の直後に
listViewer.setLabelProvider(new TestLabelProviderSample());
としてあげてラベルプロバイダーをセットしてあげます。
実行すると、ちゃんとゲッターを使って表示してくれてます。
まだ、はじめたばかりなのでこれでも結構感動だったりしますw
今日はとりあえずこれくらいにして、明日以降のネタを模索するためいじり倒しますw