[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: [jfriends] Re:Jbuilder2のGridCont rol コンポーネントについて
>やはり、ここはあきらめてdataSetを使うべきなのでしょうか・・・
>その為にはDBアクセスから書き直さないといけないので、できれば避けたいのですが。
>データをグリッドに表示したいだけで、グリッド上で編集したいわけではないので、
>dataSetを使う必要はないのですが。うーむ。
むかし GridControl を使って任意のデータを表示するコードを書いたのですが
すっかり忘れました。
手元のバックアップを見たらこんなコードを書いていました。
まず jbInit() では、
gridControl1.setAutoEdit(false);
gridControl1.setAutoInsert(false);
gridControl1.setColumnCaptions(new String[] {"部所名", "受領", "旧版廃棄"});
gridControl1.setEditInPlace(false);
セットするメソッドでは、
private void setDeliverList(Deliver[] delivers) {
gridControl1.removeAllRows();
if (delivers != null) {
String[][] gitems = // 即値で書いてあるので悪いコードの見本です。
new String[delivers.length][3]; // このときはカラム数が3だったみたい。
for (int i=0; i<delivers.length; i++) {
gridControl1.addRow();
gitems[i][0] = new String(delivers[i].getSectionName());
if (delivers[i].getFinishDate() != null) {
gitems[i][1] = delivers[i].getFinishDate();
} else {
gitems[i][1] = new String("");
}
if (delivers[i].getDisposeDate() != null) {
gitems[i][2] = delivers[i].getFinishDate();
} else {
gitems[i][2] = new String("");
}
}
gridControl1.setItems(gitems);
}
}
あまり Grid とは関係無いのですが、delivers は クラス Deliver の配列で、
Deliver はこんなクラスです。(私の書いたクラスなのでヘロヘロです)
この GridControl には、「配布予定一覧」みたいなものを表示したかったようです。
/**
* 配付予定オブジェクト
* @xxxxxxxxxx mtc9000.data.Flow
*/
public class Deliver extends Task implements Serializable {
int revision_no;
String dispose_date; // 旧版廃棄日
public Deliver() {
}
/**
* コピーコンストラクターです。
* @xxxxxxxxxx deliver コピー元のインスタンスです。
* @xxxxxxxxxx コピー元と同じ値を持った新たなインスタンスです。
*/
public Deliver(Deliver deliver) {
super(deliver);
this.revision_no = deliver.revision_no;
this.dispose_date = deliver.dispose_date;
}
/**
* 各フィールドをそれぞれ初期化するコンストラクターです。
* @xxxxxxxxxx no この配付予定固有の番号です。task_no を初期化します。
* @xxxxxxxxxx due 予定日です。
* @xxxxxxxxxx finish 実施日です。
* @xxxxxxxxxx code_name この予定に結び付けられた利用者のユーザーIDです。
* @xxxxxxxxxx user_name この予定に結び付けられた利用者名です。
* @xxxxxxxxxx mail_address この予定に結び付けられた利用者のメールアドレスです。
* @xxxxxxxxxx section_name この予定に結び付けられた利用者の所属する部所名です。
* @xxxxxxxxxx reason 理由です。
* @xxxxxxxxxx status 予定の処理状況です。(処理中/処理終了/無効)
* @xxxxxxxxxx revision この予定が所属する版の node_no です。
* @xxxxxxxxxx dispose_date 旧版廃棄日です。
*/
public Deliver( int no,
String due,
String finish,
String code_name,
String user_name,
String mail_address,
String section_name,
String reason,
int status,
int revision,
String dispose_date)
{
super.setTaskNo(no);
super.setDueDate(due);
super.setFinishDate(finish);
super.setCodeName(code_name);
super.setUserName(user_name);
super.setMailAddress(mail_address);
super.setSectionName(section_name);
super.setReason(reason);
super.setStatus(status);//1998.8.31y.e
this.revision_no = revision;
this.dispose_date = dispose_date;//1998.6.29
}
public int getRevisionNo() {
return revision_no;
}
public void setRevisionNo(int Value) {
revision_no = Value;
}
public String getDisposeDate() {
return dispose_date;
}
public void setDisposeDate(String Value) {
dispose_date = Value;
}
}
基底クラスの Task はこんなクラスです。
/**
* すべての予定オブジェクト(作成/審査/承認/制定、配付)の元になる抽象クラスです。
* @xxxxxxxxxx mtc9000.data.Flow
* @xxxxxxxxxx mtc9000.data.Deliver
*/
public abstract class Task implements Serializable {
/**
* 処理状況フラグ:処理中
* @xxxxxxxxxx mtc9000.data.Task#setStatus()
* @xxxxxxxxxx mtc9000.data.Task#getStatus()
*/
public static final int PROCESSING = 0;
/**
* 処理状況フラグ:処理終了
* @xxxxxxxxxx mtc9000.data.Task#setStatus()
* @xxxxxxxxxx mtc9000.data.Task#getStatus()
*/
public static final int DONE = 1;
/**
* 処理状況フラグ:無効
* @xxxxxxxxxx mtc9000.data.Task#setStatus()
* @xxxxxxxxxx mtc9000.data.Task#getStatus()
*/
public static final int DISABLED = -1;
int task_no;
String class_string = null;
String due_date = null;
String finish_date = null;
String code_name = null;
String user_name = null; // 超姑息^^; 1998.6.19 y.e
String mail_address = null; // 超超姑息^^; 1998.9.2y.e
String section_name = null; // 超姑息^^; 1998.6.19 y.e
String reason = null;
int status = PROCESSING;
public Task() {
class_string = this.getClass().getName();
}
/**
* コピーコンストラクターです。
* @xxxxxxxxxx task コピー元のインスタンスです。
* @xxxxxxxxxx コピー元と同じ値を持った新たなインスタンスです。
*/
public Task(Task task) {
this.task_no = task.task_no;
class_string = this.getClass().getName();
this.due_date = task.due_date;
this.finish_date = task.finish_date;
this.code_name = task.code_name;
this.user_name = task.user_name;
this.mail_address = task.mail_address;
this.section_name = task.section_name;
this.reason = task.reason;
this.status = task.status;//1998.8.31y.e
}
/**
* 各フィールドをそれぞれ初期化するコンストラクターです。
* @xxxxxxxxxx no この Task 固有の番号です。task_no を初期化します。
* @xxxxxxxxxx due 予定日です。
* @xxxxxxxxxx finish 実施日です。
* @xxxxxxxxxx code_name この予定に結び付けられた利用者のユーザーIDです。
* @xxxxxxxxxx user_name この予定に結び付けられた利用者名です。
* @xxxxxxxxxx mail_address この予定に結び付けられた利用者のメールアドレスです。
* @xxxxxxxxxx section_name この予定に結び付けられた利用者の所属する部所名です。
* @xxxxxxxxxx reason 理由です。
* @xxxxxxxxxx status 予定の処理状況です。(処理中/処理終了/無効)
*/
public Task( int no,
String due,
String finish,
String code_name,
String user_name,
String mail_address,
String section_name,
String reason,
int status)
{
class_string = this.getClass().getName();
this.task_no = no;
this.due_date = due;
this.finish_date = finish;
this.code_name = code_name;
this.user_name = user_name;
this.mail_address = mail_address;
this.section_name = section_name;
this.reason = reason;
this.status = status;//1998.8.31y.e
}
// サブクラスを動的に生成 1998.6.19 y.e
public static Task create(String class_string) {
Task task = null;
if (class_string != null && !class_string.equals("")) {
try {
task = (Task)Class.forName(class_string).newInstance();
}
catch (Exception e) {
System.out.println("Class '" + class_string + "' create error.");
e.printStackTrace();
}
}
return task;
}
public String toString() {
if (user_name != null) {
if (section_name != null) {
return user_name + " (" + section_name + ")";
} else {
return user_name;
}
} else {
return code_name;
}
}
public int getTaskNo() {
return task_no;
}
public void setTaskNo(int Value) {
task_no = Value;
}
public String getDueDate() {
return due_date;
}
public void setDueDate(String Value) {
due_date = Value;
}
public String getFinishDate() {
return finish_date;
}
public void setFinishDate(String Value) {
finish_date = Value;
}
public String getCodeName() {
return code_name;
}
public void setCodeName(String Value) {
code_name = Value;
}
public String getUserName() {
return user_name;
}
public void setUserName(String Value) {
user_name = Value;
}
public String getMailAddress() {
return mail_address;
}
public void setMailAddress(String Value) {
mail_address = Value;
}
public String getSectionName() {
return section_name;
}
public void setSectionName(String Value) {
section_name = Value;
}
public String getReason() {
return reason;
}
public void setReason(String Value) {
reason = Value;
}
public int getStatus() {
return status;
}
public void setStatus(int Value) {
status = Value;
}
}
今回は私の恥部を公表してみました。^^;
GridControl のコーディングと Task、Deliver クラスはいちおう無関係です。
よろしくお願いします。
# 恥部を公開して私以外の方に良いことがあるのでしょうか...^^;
## さいきん [jfriends] が [jbuilder] 化している...^^;;;
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル FAX 03-5362-9008