プロジェクトは現在ほぼバージョンを作成していますが、少しずつ学習が進んできたので、使用するものを整理したいと思います。 1つ目はTableViewの使用です。 RWT は SWT のサブセットであるため、RWT は SWT のすべてのインターフェイスを完全に実装しているわけではなく、SWT ほど完全ではありません。 2 つのアーキテクチャは異なり、表示フォームとインターフェイスに反映されていますが、基本的なコントロールは同じです。ここでは、まず SWT を通じていくつかの一般的なコントロールの使用法を学びます。
まず、SWT に必要なライブラリ ファイルについて説明します。含まれるもの: org.eclipse.swt_3.xxjar org.eclipse.jface_3.xxjar
org.eclipse.core.runtime_3.xxjar org.eclipse.ui.workbench_3.xxjar (org.eclipse.equinox.common_3.xxjar) また、このパッケージには org.eclipse.core.runtime も含まれているような気がします。このパッケージもインポートします。また、バージョンによってはパッケージのインポートエラーが発生する場合がありますのでご注意ください。
以下のコードは Tableview の作成コードです。「Eclipse 入門から習得まで」から引用しています。
+ソースビューのプレーンコピーをクリップボードプリントに展開しますか?
org.eclipse.jface.viewers.ColumnWeightData をインポートします。
org.eclipse.jface.viewers.TableLayout をインポートします。
org.eclipse.jface.viewers.TableViewer をインポートします。
org.eclipse.swt.SWT をインポートします。
org.eclipse.swt.layout.FillLayoutをインポートします。
org.eclipse.swt.widgets.Display; をインポートします。
org.eclipse.swt.widgets.Shell をインポートします。
org.eclipse.swt.widgets.Table をインポートします。
org.eclipse.swt.widgets.TableColumn をインポートします。
パブリック クラス TableViewer1 {
public static void main(String[] args) {
new TableViewer1().open();
}
public void open() {
最終ディスプレイ display = new Display();
最終シェルshell = new Shell();
シェル.setSize(500, 150);
//-----------------------------------------------
shell.setLayout(new FillLayout());
// ステップ 1: TableViewer オブジェクトを作成します。スタイル: MULTI では複数の選択が可能です。H_SCROLL には水平スクロール バーがあり、V_SCROLL には垂直スクロール バーがあり、BORDER には境界線があり、FULL_SELECTION では行全体が選択されます。
TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// ステップ 2: テーブルに含まれる Table オブジェクトを通じてレイアウト方法を設定する
テーブルテーブル = tv.getTable();
table.setHeaderVisible(true); // テーブルのヘッダーを表示します。
table.setLinesVisible(true); // テーブルの行を表示します。
TableLayout レイアウト = new TableLayout(); // テーブル専用のレイアウト
table.setLayout(レイアウト);
// ステップ 3: TableColumn クラスを使用してテーブル列を作成する
layout.addColumnData(new ColumnWeightData(13));//ID 列幅 13 ピクセル
new TableColumn(テーブル, SWT.NONE).setText("ID 番号");
layout.addColumnData(new ColumnWeightData(40));
new TableColumn(テーブル, SWT.NONE).setText("名前");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(テーブル, SWT.NONE).setText("性別");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(テーブル, SWT.NONE).setText("年齢");
layout.addColumnData(new ColumnWeightData(60));
new TableColumn(table, SWT.NONE).setText("レコード作成時刻");
// ステップ 4: 内部コンテナーとタガーをセットアップする
tv.setContentProvider(new TableViewerContentProvider());
tv.setLabelProvider(new TableViewerLabelProvider());
// ステップ 5: TableViewer の setInput メソッドを使用してテーブルにデータを入力します
オブジェクトデータ = PeopleFactory.getPeoples();
tv.setInput(データ);
//-----------------------------------------------
シェル.オープン();
while (!shell.isDissolved()) {
if (!display.readAndDispatch())
ディスプレイ.スリープ();
}
表示.dispose();
}
}
org.eclipse.jface.viewers.ColumnWeightData をインポートします。
org.eclipse.jface.viewers.TableLayout をインポートします。
org.eclipse.jface.viewers.TableViewer をインポートします。
org.eclipse.swt.SWT をインポートします。
org.eclipse.swt.layout.FillLayoutをインポートします。
org.eclipse.swt.widgets.Display をインポートします。
org.eclipse.swt.widgets.Shell をインポートします。
org.eclipse.swt.widgets.Table をインポートします。
org.eclipse.swt.widgets.TableColumn をインポートします。
パブリック クラス TableViewer1 {
public static void main(String[] args) {
new TableViewer1().open();
}
public void open() {
最終ディスプレイ display = new Display();
最終シェルshell = new Shell();
シェル.setSize(500, 150);
//-----------------------------------------------
shell.setLayout(new FillLayout());
// ステップ 1: TableViewer オブジェクトを作成します。スタイル: MULTI では複数の選択が可能です。H_SCROLL には水平スクロール バーがあり、V_SCROLL には垂直スクロール バーがあり、BORDER には境界線があり、FULL_SELECTION では行全体が選択されます。
TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// ステップ 2: テーブルに含まれる Table オブジェクトを通じてレイアウト方法を設定する
テーブルテーブル = tv.getTable();
table.setHeaderVisible(true); // テーブルのヘッダーを表示します。
table.setLinesVisible(true); // テーブルの行を表示します。
TableLayout レイアウト = new TableLayout(); // テーブル専用のレイアウト
table.setLayout(レイアウト);
// ステップ 3: TableColumn クラスを使用してテーブル列を作成する
layout.addColumnData(new ColumnWeightData(13));//ID 列幅 13 ピクセル
new TableColumn(テーブル, SWT.NONE).setText("ID 番号");
layout.addColumnData(new ColumnWeightData(40));
new TableColumn(テーブル, SWT.NONE).setText("名前");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(テーブル, SWT.NONE).setText("性別");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(テーブル, SWT.NONE).setText("年齢");
layout.addColumnData(new ColumnWeightData(60));
new TableColumn(table, SWT.NONE).setText("レコード作成時刻");
// ステップ 4: 内部コンテナーとタガーをセットアップする
tv.setContentProvider(new TableViewerContentProvider());
tv.setLabelProvider(new TableViewerLabelProvider());
// ステップ 5: TableViewer の setInput メソッドを使用してテーブルにデータを入力します
オブジェクトデータ = PeopleFactory.getPeoples();
tv.setInput(データ);
//-----------------------------------------------
シェル.オープン();
while (!shell.isDissolved()) {
if (!display.readAndDispatch())
ディスプレイ.スリープ();
}
表示.dispose();
}
}
提供される 2 つのクラスは次のとおりです。これら 2 つのクラスのコードが小さく、サービスが 1 つのテーブルである場合は、内部クラスとして記述することができます。
プレーンコピーをクリップボードプリントに表示しますか?
java.util.Listをインポートします。
org.eclipse.jface.viewers.IStructuredContentProvider をインポートします。
org.eclipse.jface.viewers.Viewer をインポートします。
// 内側のコンテナ。このクラスは、フォームに入力されたデータをフィルタリングして変換します。
//このクラスにはインターフェースを実装するための 3 つのメソッドがあります。そのうちの getElements がメインのメソッドで、他の 2 つのメソッドはほとんど使用されず、空の実装だけで十分です。
public class TableViewerContentProvider は IStructuredContentProvider を実装します {
// テーブルに入力されたデータセットをフィルタリングして変換します。
// すべての入力データ セットは配列に変換される必要があります。各配列要素はテーブル内のレコードであるエンティティ オブジェクトです。
public Object[] getElements(オブジェクト要素) {
//パラメータ要素は、setInput(Object input) を介して入力されるオブジェクト入力です。この例では、setInput への入力は List コレクションです。
if (elementinstanceofList)//List型判定を追加
return ((List) element).toArray(); // データセットListを配列に変換します。
それ以外
return new Object[0]; //リスト型でない場合は空の配列を返します。
}
// このメソッドは、TableViewer オブジェクトが閉じられたときにトリガーされます
public void destroy() {
}
// このメソッドは、TableViewer が setInput() を再度呼び出すとトリガーされます
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
}
}
java.util.Listをインポートします。
org.eclipse.jface.viewers.IStructuredContentProvider をインポートします。
org.eclipse.jface.viewers.Viewer をインポートします。
// 内側のコンテナ。このクラスは、フォームに入力されたデータをフィルタリングして変換します。
//このクラスにはインターフェースを実装するための 3 つのメソッドがあります。そのうちの getElements がメインのメソッドで、他の 2 つのメソッドはほとんど使用されず、空の実装だけで十分です。
public class TableViewerContentProvider は IStructuredContentProvider を実装します {
// テーブルに入力されたデータセットをフィルタリングして変換します。
// すべての入力データ セットは配列に変換する必要があります。各配列要素はテーブル内のレコードであるエンティティ オブジェクトです。
public Object[] getElements(オブジェクト要素) {
//パラメータ要素は、setInput(Object input) を介して入力されるオブジェクト入力です。この例では、setInput への入力は List コレクションです。
if (elementinstanceofList)//List型判定を追加
return ((List) element).toArray(); // データセットListを配列に変換します。
それ以外
return new Object[0]; //リスト型でない場合は空の配列を返します。
}
// このメソッドは、TableViewer オブジェクトが閉じられたときにトリガーされます
public void destroy() {
}
// このメソッドは、TableViewer が setInput() を再度呼び出すとトリガーされます。
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
}
}
プレーンコピーをクリップボードプリントに表示しますか?
org.eclipse.jface.viewers.ILabelProviderListener をインポートします。
org.eclipse.jface.viewers.ITableLabelProvider をインポートします。
org.eclipse.swt.graphics.Image をインポートします。
//タガー。内部コンテナがフォームに入力されたデータセットを処理する場合、
//次に、タガーはデータセット内の 1 つのエンティティ オブジェクトを処理および変換し、エンティティ オブジェクトのフィールドがテーブルのどの列に表示されるかを決定します。
public class TableViewerLabelProvider は ITableLabelProvider を実装します {
// 複数の画像を作成する
プライベート画像[] 画像 = 新しい画像[] {
新しい画像(null, "icons/refresh.gif"),
新しい画像(null, "icons/star.jpg"),
new Image(null, "icons/moon.jpg") };
// このメソッドは、データ レコードのテーブルの各列に表示されるテキストを決定します。
//要素パラメータはエンティティ クラス オブジェクトです。 Col は現在設定される列の列番号で、0 は最初の列です。
public String getColumnText(Object element, intcol) {
PeopleEntity o = (PeopleEntity) 要素 // 型変換;
if (col == 0)//最初の列にはどのデータを表示する必要がありますか?
o.getId().toString() を返します。
if (列 == 1)
o.getName() を返します;
if (列 == 2)
return o.isSex() "男性" : "女性";
if (列 == 3)
return String.valueOf(o.getAge()); // int型をString型に変換します
if (列 == 4)
o.getCreateDate().toString(); を返します。
return null; // メソッドは null 値を返すことができます
}
// getColumnText メソッドはテキストを表示するために使用され、このメソッドは画像を表示するために使用されます。
public Image getColumnImage(Object element, intcol) {
PeopleEntity o = (PeopleEntity) 要素;
// レコード「Chen Gang」にのみ写真を表示させます
if (o.getName().equals("Chen Gang") || o.getName().equals("Zhou Yue")) {
if (col == 0)//最初の列に表示される画像
画像を返します[0];
if (col == 2)//性別に基づいて異なるアイコンを表示します
o.isSex() を返しますか? 画像[1] : 画像[2];
}
return null; // メソッドは null 値を返すことができます
}
public void destroy() {
// SWT コンポーネントの原則を忘れないでください。自分で作成し、自分でリリースします。
for (イメージ画像 : 画像) {
image.dispose();
}
}
//---------------以下のメソッドはめったに使用されないため、今は気にせず空で実装してください--------------- ----
public boolean isLabelProperty(オブジェクト要素, String プロパティ) {
false を返します。
}
public void addListener(ILabelProviderListener リスナー) {
}
public void RemoveListener(ILabelProviderListener リスナー) {
}
}
org.eclipse.jface.viewers.ILabelProviderListener をインポートします。
org.eclipse.jface.viewers.ITableLabelProvider をインポートします。
org.eclipse.swt.graphics.Image をインポートします。
//タガー。内部コンテナがフォームに入力されたデータセットを処理する場合、
//次に、タガーはデータセット内の 1 つのエンティティ オブジェクトを処理および変換し、エンティティ オブジェクトのフィールドがテーブルのどの列に表示されるかを決定します。
public class TableViewerLabelProvider は ITableLabelProvider を実装します {
// 複数の画像を作成する
プライベート画像[] 画像 = 新しい画像[] {
新しい画像(null, "icons/refresh.gif"),
新しい画像(null, "icons/star.jpg"),
new Image(null, "icons/moon.jpg") };
// このメソッドは、データ レコードのテーブルの各列に表示されるテキストを決定します。
//要素パラメータはエンティティ クラス オブジェクトです。 Col は現在設定される列の列番号で、0 は最初の列です。
public String getColumnText(Object element, intcol) {
PeopleEntity o = (PeopleEntity) 要素 // 型変換;
if (col == 0)//最初の列にはどのデータを表示する必要がありますか?
o.getId().toString() を返します。
if (列 == 1)
o.getName() を返します;
if (列 == 2)
return o.isSex() "男性" : "女性";
if (列 == 3)
return String.valueOf(o.getAge()); // int型をString型に変換します
if (列 == 4)
o.getCreateDate().toString(); を返します。
return null; // メソッドは null 値を返すことができます
}
// getColumnText メソッドはテキストを表示するために使用され、このメソッドは画像を表示するために使用されます。
public Image getColumnImage(Object element, intcol) {
PeopleEntity o = (PeopleEntity) 要素;
// レコード「Chen Gang」にのみ写真を表示させます
if (o.getName().equals("Chen Gang") || o.getName().equals("Zhou Yue")) {
if (col == 0)//最初の列に表示される画像
画像を返します[0];
if (col == 2)//性別に基づいて異なるアイコンを表示します
o.isSex() を返しますか? 画像[1] : 画像[2];
}
return null; // メソッドは null 値を返すことができます
}
public void destroy() {
// SWT コンポーネントの原則を忘れないでください。自分で作成し、自分でリリースします。
for (イメージ画像 : 画像) {
image.dispose();
}
}
//---------------以下のメソッドはめったに使用されないため、今は気にせず空で実装してください--------------- ----
public boolean isLabelProperty(オブジェクト要素, String プロパティ) {
false を返します。
}
public void addListener(ILabelProviderListener リスナー) {
}
public void RemoveListener(ILabelProviderListener リスナー) {
}
}
もう 1 つはエンティティ クラスです。ここでは単にエンティティを記述します。ここでのデータはデータベースから読み取ることができますが、データの保存に使用されるコンテナの種類に注意してください。
そして型変換にも注意してください。
プレーンコピーをクリップボードプリントに表示しますか?
java.util.Dateをインポートします。
//このクラスには、データベース テーブルの 5 つのフィールドに対応する、異なるデータ型の 5 つの変数が含まれています。変数はプライベート型です。つまり、次のことしかできません。
//クラスの内部コードによってアクセスされ、外部の世界はこれらの変数の対応する Setter/Geter メソッドを通じてのみアクセスできます。
パブリック クラス PeopleEntity {
private Long id; //一意の識別コード。多くの場合、データベース内で自動的に増加する ID 列。
プライベート文字列名 // 名前;
private boolean sex //性別は真の男性、偽の女性
private int age //年齢;
private Date createDate //レコードの作成日。日付型は java.sql.Date ではなく java.util.Date です
//以下のコードは各フィールドの Setter/Geter メソッドです。セクション 3.5.2 を参照してください。これらのメソッドは Eclipse で自動的に生成できます。
public Long getId() { 戻り値;}
public void setId(Long long1) {id = long1;}
public String getName() {名前を返します;}
public void setName(String string) {name = string;}
public boolean isSex() { 性別を返します;}
public void setSex(boolean sex) { this.sex = セックス }
public int getAge() {年齢を返す;}
public void setAge(int i) {age = i;}
public Date getCreateDate() {return createDate;}
public void setCreateDate(Date date) {createDate = date;}
}
java.util.Dateをインポートします。
//このクラスには、データベース テーブルの 5 つのフィールドに対応する、異なるデータ型の 5 つの変数が含まれています。変数はプライベート型です。つまり、次のことしかできません。
//クラスの内部コードによってアクセスされ、外部の世界はこれらの変数の対応する Setter/Geter メソッドを通じてのみアクセスできます。
パブリック クラス PeopleEntity {
private Long id; //一意の識別コード。多くの場合、データベース内で自動的に増加する ID 列。
プライベート文字列名 // 名前;
private boolean sex //性別は真の男性、偽の女性
private int age //年齢;
private Date createDate //レコードの作成日。日付型は java.sql.Date ではなく java.util.Date です
//以下のコードは各フィールドの Setter/Geter メソッドです。セクション 3.5.2 を参照してください。これらのメソッドは Eclipse で自動的に生成できます。
public Long getId() { 戻り値;}
public void setId(Long long1) {id = long1;}
public String getName() {名前を返します;}
public void setName(String string) {name = string;}
public boolean isSex() { 性別を返します;}
public void setSex(boolean sex) { this.sex = セックス }
public int getAge() {年齢を返す;}
public void setAge(int i) {age = i;}
public Date getCreateDate() {return createDate;}
public void setCreateDate(Date date) {createDate = date;}
}
さらに、データを取得するためのカプセル化されたインターフェイスもあります。
プレーンコピーをクリップボードプリントに表示しますか?
java.util.ArrayListをインポートします。
java.util.Dateをインポートします。
java.util.Listをインポートします。
// PeopleEntity オブジェクトのファクトリを作成し、3 つの PeopleEntry オブジェクトを作成し、それらを List コレクションにロードして返します。
パブリック クラス PeopleFactory {
public static List<PeopleEntity> getPeoples() { //ファクトリの静的メソッド
List<PeopleEntity> list = new ArrayList<PeopleEntity>();
{ // 最初のエンティティクラスオブジェクト
PeopleEntity o = 新しい PeopleEntity();
o.setId(new Long(1));//id フィールドの型は Long として定義されているため、変換する必要があります
o.setName("チェン・ギャング");
o.setSex(true);
o.setAge(28);
o.setCreateDate(new Date()); // 現在の日付
list.add(o);
}
{ // 2 番目のエンティティ クラス オブジェクト
PeopleEntity o = 新しい PeopleEntity();
o.setId(2L); //JDK5.0の自動ボクシング機能を利用してlongオブジェクトからLongオブジェクトへの変換を保存します。
o.setName("毎週の読書");
o.setSex(false);
o.setAge(18);
o.setCreateDate(new Date());
list.add(o);
}
{ // 3 番目のエンティティ クラス オブジェクト
PeopleEntity o = 新しい PeopleEntity();
o.setId(3L);
o.setName("チェン・チェンジェン");
o.setSex(true);
o.setAge(27);
o.setCreateDate(new Date());
list.add(o);
}
リストを返す;
}
}
この記事は CSDN ブログからのものです。転載する場合は出典を明記してください: http://blog.csdn.net/youxigogo/archive/2009/12/30/5105179.aspx
-