一级毛片免费不卡在线视频,国产日批视频免费在线观看,菠萝菠萝蜜在线视频免费视频,欧美日韩亚洲无线码在线观看,久久精品这里精品,国产成人综合手机在线播放,色噜噜狠狠狠综合曰曰曰,琪琪视频

利用Rational Application Developer Visual Editor實(shí)現(xiàn)Sw -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.oriental01.com - 電腦資料】

利用 Rational Application Developer Visual Editor 實(shí)現(xiàn) Swing 可視化組件與數(shù)據(jù)的綁定

引言

Java™可視化編輯器允許用戶以圖形化的方式編輯 Java 用戶界面,

利用Rational Application Developer Visual Editor實(shí)現(xiàn)Sw

。在 IBM Rational Application Developer for WebSphere® Software V6 中,這一功能得到了進(jìn)一步的增強(qiáng)。因?yàn)?V6 支持可視化組件與不 同來源的數(shù)據(jù)快速綁定,比如,這些數(shù)據(jù)可以來源于 Web 服務(wù),也可以來源于 EJB 組件。這篇文章講述了如何利用數(shù)據(jù)綁定的優(yōu)秀特性,用一種快速而強(qiáng)大的 方法,來定義用戶界面的數(shù)據(jù)讀取和數(shù)據(jù)寫入。

Swing 概覽

如同 許多其它部件一樣,AWT(抽象窗口工具)和 Swing 圖形界面組件均被包括在 JAVA 基礎(chǔ)類庫(JFC)中,它們提供了一個框架,可以輕松的構(gòu)造圖形用戶界面 (GUI),為 JAVA 應(yīng)用程序添加豐富的圖形化功能性和互操作性。Swing 是一個 功能豐富的通用工具包,它提供了很多非常實(shí)用的功能。但出于我們的目標(biāo)需要 ,在這里我們只集中描述兩個重要的功能,因?yàn)檫@兩個功能對于理解可視化編輯 器的綁定模型和綁定操作是最為重要的。

使用 Swing 的數(shù)據(jù)模型

大部分的 Swing 組件均有一些模型,利用這些模型,您可以靈活地決定 如何存儲和檢索應(yīng)用程序中的數(shù)據(jù)。其中,在 Rational Application Developer(以下簡稱為Application Developer)的數(shù)據(jù)綁定工具中就有兩個這 樣的模型,它們是文檔和表格模型,下面讓我們看看這兩個模型:

圖 1 :文擋模型

在文檔模型中(如圖 1),使用文本組件從它的數(shù)據(jù)視圖中分離出數(shù) 據(jù)(稱為模型),該模型實(shí)現(xiàn)了 javax.swing.text.Document 接口,并提供以 下的服務(wù):

包含文本。文檔把文本內(nèi)容存儲在 javax.swing.text.Element 對象中,同時還可表示任意文本邏輯結(jié)構(gòu),比如段 落、共享樣式文本等等。

通過 remove(String aString) 和 insertString(int position, String aString, AttributeSet anAttributeSet) 來提供對文本編輯的支持。

將文本的改動通知給文檔 并使編輯 可撤銷改動。

管理 Position 對象。當(dāng)文本內(nèi)容 被更改時,Position 對象會跟蹤文本中的特定位置。

使您能夠獲取文本 的相關(guān)信息(例如它的長度),以及文本片段。

下面是在文本域中設(shè)置 一個文檔的例子:

Document doc = new MyDocument();
...
textfield = new JTextField();
textfield.setDocument (doc);

圖 2:表格模型

在表格模型中(圖 2),圖形化組件使您可以列出行和列的數(shù)據(jù),同 時有滾動條來提供分頁功能。每一個表格都從實(shí)現(xiàn) javax.swing.table.TableModel 接口的對象中獲取數(shù)據(jù)。通常,您可以將表格 模型作為 javax.swing.table.AbstractTableModel 類的子類來實(shí)現(xiàn)。

您的表格模型可以用 array、list、或 hash map 來存儲數(shù)據(jù),或者可以從外部 數(shù)據(jù)源(比如數(shù)據(jù)庫)獲取內(nèi)容。在某些情況下,模型可以在執(zhí)行期間實(shí)際生成 數(shù)據(jù)。

我們可以用 JTable 顯示任意數(shù)據(jù)模型,并通過下面的代碼來實(shí) 現(xiàn) TableModel 接口:

TableModel myData = new MyTableModel ();
JTable table = new JTable();
table.setModel (myData);

使用 Swing 操作

當(dāng)有兩個或更多執(zhí)行相同功能 的組件時,我們通常使用操作對象將功能封裝起來,并實(shí)現(xiàn) javax.swing.Action 接口。操作對象是一種操作 ,它提供操作--事件的 處理。使用 setAction 方法將操作添加到組件中,就會產(chǎn)生以下效果:

組件的狀態(tài)被更新以匹配操作的狀態(tài)。例如,如果設(shè)置了操作的文本和圖標(biāo)的值 ,組件的文本和圖標(biāo)就會更新,以反映這種變化。

在組件中,操作對象 被注冊為操作

如果操作的狀態(tài)發(fā)生改變,組件的狀態(tài)會被更新以 匹配該操作。例如,如果您改變了操作的啟用狀態(tài),所有與之關(guān)聯(lián)的組件都會改 變各自的啟用狀態(tài),以匹配操作的改變。

這里有一個為按鈕設(shè)置操作的 例子:

Action myAction = new MyAction();
...
button = new JButton();
button.setAction (myAction);

Swing 可視化組件的數(shù)據(jù)綁定

Eclipse 中的 可視化編輯器使用 AWT/Swing 組件來支持可視化結(jié)構(gòu)。設(shè)計(jì)選項(xiàng)板包含了常用 的組件、容器、菜單及控件,并使用可擴(kuò)展、壓縮和打開的 drawer 將它們組織 起來。

如果在綁定 Swing 可視化組件時不使用 Application Developer binder, 那么就是一種手動操作處理,這就要求我們在設(shè)計(jì)代碼編輯器(design source editor)中加入正確的代碼。然而,如果我們使用 binder,就可以使用數(shù)據(jù)源 、數(shù)據(jù)對象以及 Swing binder 助手類的組合,并利用可視化反饋,從而可以更 加快速、更加簡便的進(jìn)行可視化組件的數(shù)據(jù)綁定。

Application Developer 中支持的缺省 Swing 可視化組件包括文本域、表格 、按鈕。如果需要,您還可以通過實(shí)現(xiàn)所提供的接口,為其它組件編寫 binder 。Visual Editor 提供的對話框可以幫助您創(chuàng)建數(shù)據(jù)對象和數(shù)據(jù)源,您可以使用 它們來綁定可視化組件。然而,如果不使用這些對話框,您還可以通過選項(xiàng)板添 加基本數(shù)據(jù)對象、數(shù)據(jù)源數(shù)據(jù)對象及數(shù)據(jù)源,并使用 Properties 視圖對它們進(jìn) 行配置?紤]到將來可能要支持其它選件(widget)庫,數(shù)據(jù)源和數(shù)據(jù)對象類均 完全獨(dú)立于可視化組件。

當(dāng)您將可視化組件綁定到數(shù)據(jù)源和數(shù)據(jù)對象時,binder 代碼會根據(jù)需要被生 成到您的項(xiàng)目源文件目錄中。在缺省情況下,所生成的類會被添加到項(xiàng)目的 jve.generated 包中。然后,您可以自由地?cái)U(kuò)展、替換、或重寫數(shù)據(jù)綁定邏輯。 倘若您更改了 jve.generated 類并添加一些自定義的業(yè)務(wù)邏輯,它們將不會被 Visual Editor 改寫。

Swing binder

Binder 將可視化組件連接到數(shù)據(jù)對象?梢暬M件和它的 binder 之間是一 對一的關(guān)系。但數(shù)據(jù)對象和同它發(fā)生交互的 binder 之間則是一對多關(guān)系。換句 話說,就是可以將多個可視化組件綁定到一個給定的數(shù)據(jù)對象,但每個可視化組 件都需要它自己的 binder。

數(shù)據(jù)源

數(shù)據(jù)源如同數(shù)據(jù)工廠,它的目的是為數(shù)據(jù)對象提供數(shù)據(jù),以及獲取原始數(shù)據(jù) 。Application Developer 的可視化編輯器支持的數(shù)據(jù)源包括 J2EE 會話 bean 、Web 服務(wù)以及JavaBean。數(shù)據(jù)源可以看作是虛包(facade)工廠,它提供了各 種配置屬性,從而可以實(shí)現(xiàn)數(shù)據(jù)源虛包的實(shí)例化和初始化。虛包是包含一套方法 的類,利用它,你可以從后臺創(chuàng)建數(shù)據(jù)對象,或提供一些其它的業(yè)務(wù)功能。當(dāng)然 ,這需要數(shù)據(jù)源實(shí)現(xiàn)者正確地實(shí)例化虛包。

數(shù)據(jù)對象

數(shù)據(jù)對象代表本地可用數(shù)據(jù)的對象。利用它,客戶端組件可以進(jìn)行交互;它 也是對象的封裝器,可以管理該對象的屬性變更事件。

圖 3 顯示的是 Application Developer 中的設(shè)計(jì)選項(xiàng)板,包括可視化組件 的 drawer,以及數(shù)據(jù) binder。

圖 3:Rational Application Developer 設(shè)計(jì)選項(xiàng)板

MyBooks 應(yīng)用程序范例

這里,我們對 MyBooks 程序做了一些改動,以便我們能更好地關(guān)注 Application Developer visual editor for data binding 所支持的三個 Swing 可視化組件:JTextField、JTable 和 JButton。圖 4 顯示了 MyBooks 應(yīng)用程序的一個屏幕截圖,該程序?qū)?XML 數(shù)據(jù)顯示在 JTable 中,XML 文件名 顯示在 JTextField 里,同時還有一個名為 SAVE 的 JButton。

圖 4 MyBooks 應(yīng)用程序表格模型

MyBooks 采用了一個參數(shù):XML 文件的名稱,它包含了所有在表格中顯示的 書籍清單。當(dāng)我們按下了 SAVE 按鈕后,表格中的內(nèi)容將被保存在文本域中指定 的 XML 文件里。

為了創(chuàng)建 MyBooks 應(yīng)用程序,我們在 A 部分中設(shè)計(jì)好基本 GUI,然后在 B 部分中使用 Application Developer 可視化地將 GUI 與數(shù)據(jù)綁定起來。

A 部分:構(gòu)建用戶界面和 JAVA 數(shù)據(jù)工廠

為了構(gòu)建 MyBooks 的用戶界面,我們將使用可視化編輯器:

創(chuàng)建一個 JAVA 項(xiàng)目

在 Application Developer 中,選擇 File => New => Project。

選擇 Java Project 并按下 Next 按鈕。

為項(xiàng)目輸入名稱 MyBooks ,然后按下 Next 按鈕。

從 Application Developer 安裝程序中將 xsdbeans.jar 添加到 Java 構(gòu)建 路徑中,這個 JVR 文件位于:

/SDP/6.0/rwd/eclipse/plugins/com.ibm.etools.xsd.codegen.xsdbeans_6.0.0\jars\xsdbeans.jar。

按下 Finish 按鈕。

創(chuàng)建包 ve.eclipse 和 ve.rad。

添加主要的可視類

在 Package Explorer 中,右鍵單擊項(xiàng)目并選擇 New => Other。

選擇 Visual Class 然后按下 Next 按鈕。

指定壓縮包的名稱為 ve。

指定類的名稱為 MyBooksApp。

確保超類 Superclass 是 javax.swing.JFrame,并且 public static void Main(String[] args) 被選中。

按下 Finish 按鈕。

定制 JFrame

將私有變量 filename 添加到該類中,數(shù)據(jù)類型為 String。

修改構(gòu)造函數(shù) MyBooksApp() 的結(jié)構(gòu),使其如下所示:

public MyBooksApp(String f) {
  super();
  filename = f;
  initialize();
}

修改 main(),使其如下所示: public static void main(String[] args) {
  MyBooksApp app = new MyBooksApp(args[0]);
  app.show();
}

在可視化編輯器窗口中選擇文本 JFrame,并在彈出的可編輯文本框中,輸入 MyBooks。

在可視化編輯器窗口中選擇 JFrame. 組件,并確保當(dāng)前處于 Properties 視 圖。

從 Properties 視圖中,將屬性 defaultCloseOperation 設(shè)置為 EXIT,然 后按下 Enter 按鈕。

從 Properties 視圖中,將屬性 size 設(shè)置為 400,200,然后按下 Enter 按 鈕。

添加一個文本域

功能:這一可視化組件將顯示 XML 文件名。

在選項(xiàng)板的 Swing Containers 部分中選擇 JPanel。 然后把它拖放到可視 化編輯器中 JFrame. 組件之外的位置。

在選項(xiàng)板的 Swing Containers 部分中選擇 JLabel,然后把它拖放到 JPanel 中。

從 Properties 視圖中,將 JLabel 的 text 屬性設(shè)為 XML filename:,然 后按下 Enter。

在選項(xiàng)板的 Swing Containers 部分中選擇 JTextField,然后把它拖放到 JPanel 中。

將 JPanel 放置在 JFrame. 的 North 部分。

添加一個按鈕

功能:這個可視化組件可以將表格中的數(shù)據(jù)保存到指定的 XML 文件中。

在選項(xiàng)板的 Swing Components 部分中選擇 JButton,并將它放置在 JFrame. 的 South 部分。

從 Properties 視圖中,將 JButton 的 text 屬性設(shè)為 SAVE,然后按 Enter。

添加一個表格

功能:該可視化組件將顯示 XML 文件的內(nèi)容

在選項(xiàng)板的 Swing Containers 部分中,選擇 JScrollPane 上的 JTable, 并把它放置到 JFrame. 的 Center 部分。

按下 CTRL-S 以保存可視類,然后關(guān)閉編輯器。

將類復(fù)制到 ve.eclipse 和 ve.rad 中。

這個練習(xí)的用戶界面部分現(xiàn)在已經(jīng)完成:我們創(chuàng)建了一個 JAVA 項(xiàng)目以存儲 可視類 JFrame, 可視類由三個關(guān)鍵的 Swing 組件構(gòu)成,即 JTextField、 JButton 和 JTable.

不過,我們只是完成了第一部分工作的一半,下一步就要編寫業(yè)務(wù)邏輯。利 用這些業(yè)務(wù)邏輯,我們可以在可視類和數(shù)據(jù)源之間進(jìn)行數(shù)據(jù)的讀取或?qū)懭。在這 個案例中,我們的數(shù)據(jù)源就是 XML 文本。此時,可視化編輯器中的 GUI 如圖 5 所示。

圖 5:MyBooks GUI

Java 數(shù)據(jù)工廠的主要功能在于讀取 XML 文件的內(nèi)容。不過,在我們創(chuàng)建 Java 數(shù)據(jù)工廠以前,我們得先創(chuàng)建 XML 文件和兩個數(shù)據(jù)類型:

創(chuàng)建 XML 文件

在 MyBooks 項(xiàng)目中新建一個文件,命名為 books.xml ,然后把下面的這些 內(nèi)容復(fù)制到所生成的文件中:

  
     VisualAge for Java for Non-Programmers
    Parkin, Burrus, Pullin
     2002
  

  
    Bird Life & Behavior
     Sibley
     2001
  

創(chuàng)建 book 數(shù)據(jù)類型

XML 文件的每個條目都會存儲在 book 對象中。新建一個 JAVA 類,并把它 命名為ve.book,然后把下面的代碼粘貼到文件內(nèi)容中: =package ve;
import com.ibm.etools.xmlschema.beans.*;
public class book extends ComplexType {
  public book() {
  }
  public void setTitle(String title) {
    setElementValue("title", title);
  }
  public String getTitle() {
    return getElementValue("title");
  }
  public boolean removeTitle() {
    return removeElement("title");
  }
  public void setAuthor(String author) {
    setElementValue("author", author);
  }
  public String getAuthor() {
    return getElementValue("author");
  }
  public boolean removeAuthor() {
    return removeElement("author");
  }
  public void setCopyrightDate(String copyrightDate) {
     setElementValue("copyrightDate", copyrightDate);
  }
   public String getCopyrightDate() {
    return getElementValue ("copyrightDate");
  }
  public boolean removeCopyrightDate () {
    return removeElement("copyrightDate");
  }
}

創(chuàng)建 books 的數(shù)據(jù)類型

books 對象存儲 book 的條目清單,

電腦資料

利用Rational Application Developer Visual Editor實(shí)現(xiàn)Sw》(http://www.oriental01.com)。新建一個 JAVA 類,并把它命名為 ve.books ,將內(nèi)容設(shè)置為: package ve;
import com.ibm.etools.xmlschema.beans.*;
public class books extends ComplexType {
  public books() {
  }
  public void setBook(int index, book book) {
    setElementValue(index, "book", book);
  }
  public book getBook(int index) {
     return (book) getElementValue("book", "book", index);
  }
  public int getbookCount() {
    return sizeOfElement ("book");
  }
  public boolean removeBook(int index) {
     return removeElement(index, "book");
  }
}

創(chuàng)建 Java 數(shù)據(jù)工廠

新建一個 Java 類,并把它命名為 ve.MyBooksDataSource,其內(nèi)容如下: package ve;
import com.ibm.etools.xmlschema.beans.*;
public class MyBooksDataSource extends Factory {
  public MyBooksDataSource() {
     super();
  }
  public book[] getBooks() {
    books iBooks = (books) loadDocument("books", getXMLFilename());
     book[] result = new book[iBooks.getbookCount()];
    for (int i = 0; i < iBooks.getbookCount(); i++) {
      result[i] = iBooks.getBook(i);
    }
    return result;
  }
  public BaseType loadDocument(String className, String filename) {
    return super.loadDocument(className, filename);
  }
}

如果我們現(xiàn)在運(yùn)行 MyBooks 應(yīng)用程序,會發(fā)現(xiàn)應(yīng)用程序還沒有數(shù)據(jù)內(nèi)容,因 為所有的 Swing 組件都尚未和數(shù)據(jù)綁定。在接下來的這一部分,我們將把數(shù)據(jù) 綁定到可視化組件。

B 部分:使用可視化編輯器綁定 MyBooks 用戶界面

我們繼續(xù)以自頂向下的方式來構(gòu)建 GUI,各個組件已經(jīng)被放置好。一旦看上 去沒什么缺陷,我們現(xiàn)在可以提供邏輯,使組件可以訪問并更新數(shù)據(jù),F(xiàn)在,我 們將可視化組件與對應(yīng)的數(shù)據(jù)綁定起來。

打開 JFrame

在 Application Developer 中,選擇 File => Import。

選擇 Existing Project into Workspace,然后按下 Next 按鈕。

選擇之前已創(chuàng)建的 MyBooks 項(xiàng)目,然后按下 Finish 按鈕。

在可視化編輯器中打開 ve.rad.MyBooksApp。

綁定文本域

選擇 textfield,這時,在 textfield 的左上方會出現(xiàn)一個 Bind... 選項(xiàng) 。

選擇 Bind...,會打開一個對話框,該對話框可以讓您指定如何綁定到數(shù)據(jù) 的細(xì)節(jié)。

在 Field Data Bindings 窗口中,選擇 New Data Source Data Object... 。

在 New Data Source Data Object 窗口中,選擇 Java Bean Factory 作為 source type。

選擇 Data source 下拉框后面的 New...。

在 Choose a Bean 窗口中,搜索并選擇 ve.MyBooksDataSource。然后按下 OK 按鈕以添加該數(shù)據(jù)源。

在 Source service 文本框中,選擇 getXMLFilename() ,這是數(shù)據(jù)源虛包 MyBooksDataSource.java 中一個方法的名稱。

在 Name 文本域中,將 stringObject 改為 xmlFilename,然后按下 OK 按 鈕。

再次按下 OK 按鈕。

綁定表格

選擇表格,在表格的左上方會出現(xiàn)一個 Bind... 選項(xiàng)

選擇 Bind...。

在 Table Data Bindings 窗口中,選擇 New Data Source Data Object... 。

在 New Data Source Data Object 窗口中,只出現(xiàn)一個 source service 方 法 getBooks(),這是返回?cái)?shù)組數(shù)據(jù)的唯一方法,這些數(shù)據(jù)可以在表格中使用。 按下 OK 按鈕,這時我們就選用了 getBooks() 方法。

將數(shù)據(jù)對象屬性 author、copyrightDate及 title 添加到表格的列清單中。

按下 OK 按鈕。

在可視化編輯器中,選擇非可視 bean MyBooksDataSource,打開或激活 Properties 視圖。

展開屬性 dataSource。

將屬性 encoding 設(shè)為 UTF-8 ,然后按下 Enter 按鈕。

將屬性 encodingTab 設(shè)為 UTF-8 ,然后按下 Enter按鈕。

將屬性 packageName 設(shè)為 ve,然后按下 Enter 按鈕。

將屬性 xmlFilename 設(shè)為 filename ,并按下 Enter. 按鈕,然后在代碼編 輯器中修改生成的代碼, 將

myBooksDataSource1.setXMLFilename("filename");

改為:

myBooksDataSource3.setXMLFilename(filename);.

綁定按鈕

選擇按鈕,在按鈕的左上方會出現(xiàn)一個Bind...選項(xiàng)

選擇 Bind... .

在 Component Action Bindings 窗口中,選擇 source service 文本框里的 save(java.lang.String)。

在 Argument 下拉列表框中,選擇 xmlFilename

按下 OK 按鈕。

保存文件。

現(xiàn)在,MyBooks 應(yīng)用程序已完成,圖 6 顯示的是該程序的屏幕截圖。

圖 6:已完成的 MyBooks 應(yīng)用程序

測試應(yīng)用程序

為了測試您的應(yīng)用程序,您需要在運(yùn)行配置中提供 XML 文件名作為參數(shù):

在工具條上,選擇 Run 圖標(biāo)旁的箭頭,并選擇 Run...

在 Run 窗口中,選擇 Java Application 作 為啟動程序。

按下 New,在窗口中會彈出一個新的運(yùn)行配置框,Main 選項(xiàng)卡中,填入您的項(xiàng)目名 MyBooks 和應(yīng)用程序名 ve.rad.MyBooksApp。

選擇 Arguments 選項(xiàng)卡,輸入 XML 文件名的全路徑,當(dāng)應(yīng)用程序啟動時,在 Arguments 選項(xiàng)卡中填寫的程序參數(shù)將被傳遞給 main(String[] args) 方法,這就是該應(yīng)用程序獲得參數(shù)值的方法。

選擇 Run。

更改 XML 文件名。

按下 Save 按鈕。檢查表格的內(nèi)容是否被保存到指定的文件和位置。

關(guān)閉 MyBooksApp。

C 部分: 使用 Eclipse 可視化編輯器綁定 MyBooks 用戶界面(可選)

本部分是可選擇,因?yàn)樗枋龅氖鞘褂?Eclipse 可視化編輯器(它沒有數(shù)據(jù)綁定工具)來綁定第一部分中創(chuàng)建的用戶界面,本部分的目的是與 Application Developer 提供的綁定工具進(jìn) 行對比,從而凸顯使用數(shù)據(jù)綁定工具的優(yōu)勢。

為了使用 Eclipse 可視化編輯器,我們需要以下組件(這些組件可以從 Eclipse 可視化編輯器項(xiàng)目中下載):

Eclipse build eclipse-SDK 3.0.1

Visual Editor 1.0.2

EMF build 2.0.1

GEF build 3.0.1

創(chuàng)建表格模型

為了在運(yùn)行時顯示表格,你必須為表格模型提供實(shí)際數(shù)據(jù),然后將表格模型和 JTable bean 相關(guān)聯(lián)。表格模 型提供了多種可以被 JTable bean 調(diào)用的方法,利用這些方法,JTable bean 就能獲取一些信息,如表格的行數(shù)和列數(shù),或者是用在特定表格單元的數(shù)據(jù)。您需要在表格模型類中實(shí)現(xiàn)這些方 法,這樣,JTable bean 就可以訪問模型中的數(shù)據(jù),并在表格視圖中顯示出來。

下面,我們新建一個 JAVA 類,并命名為 ve.eclipse.MyBooksTableModel。用下面的代碼代替所生成的文件的內(nèi)容:

package ve.eclipse;
import javax.swing.table.AbstractTableModel;
import ve.*;
public class MyBooksTableModel extends AbstractTableModel {
private MyBooksDataSource iBooksFactory;
private books iBooks;
public MyBooksTableModel() {
super();
}
public MyBooksTableModel(String xmlFile) {
super();
iBooksFactory = new MyBooksDataSource();
iBooksFactory.setPackageName("ve");
iBooksFactory.setEncoding("UTF8");
iBooksFactory.setEncodingTag("UTF-8");
iBooks = (books) iBooksFactory.loadDocument("books", xmlFile);
}
public String getXMLFile() {
return iBooksFactory.getXMLFilename();
}
public void setXMLFile(String filename) {
iBooksFactory.setXMLFilename(filename);
}
public void save(String fname) {
iBooksFactory.save(fname);
}
public int getColumnCount() {
return 3;
}
public int getRowCount() {
return iBooks.getbookCount();
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0: return iBooks.getBook(rowIndex).getTitle();
case 1: return iBooks.getBook(rowIndex).getAuthor();
case 2: return iBooks.getBook(rowIndex).getCopyrightDate();
}
return null;
}
public String getColumnName(int arg0) {
switch (arg0) {
case 0: return "Title";
case 1: return "Author";
case 2: return "Copyright Date";
}
return "";
}
}

綁定表格 table

a.在可視化編輯器中打開 ve.eclipse.MyBooksApp.java。

b.從選項(xiàng)板中選擇 Choose Bean ,會彈出 Choose a Bean 對話框。

c.找到 ve.eclipse.MyBooksTableModel,并按下 OK 按鈕。

d.把非可視 bean 放到可視化編輯器中,注意不要和 JFrame. 重疊,這一操作將生成 getMyBooksTableModel()。

e.修改 getMyBooksTableModel(),使其如下所示:

private MyBooksTableModel getMyBooksTableModel() {
if (myBooksTableModel == null) {
myBooksTableModel = new MyBooksTableModel(filename);
}
return myBooksTableModel;
}

f.在 Java Beans 視圖中,選擇 table。

g.修改 getJTable(),使其如下所示:

private JTable getJTable() {
if (jTable == null) {
jTable = new JTable();
jTable.setModel(getMyBooksTableModel());
}
return jTable;
}

綁定文本域

a.在 Java Beans 視圖中選擇 text field。

b.修改 getJTextField(),使其如下所示:

private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setText(filename);
}
return jTextField;
}

綁定按鈕 button

a.右鍵單擊 SAVE 按鈕,并選擇 Events => actionPerformed.

b.修改 getJButton(),如下所示:

private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("SAVE");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
getMyBooksTableModel().save(getJTextField().getText());
}
});
}
return jButton;
}

c.保存文件。

5.測試應(yīng)用程序

為了測試您的應(yīng)用程序,您需要在運(yùn)行配置中提供 XML 文件名作為參數(shù):

a.在工具條上,選擇 Run 圖標(biāo)旁的箭頭,然后選擇 Run...

b.在 Run 窗口中,選擇 Java Application 作為啟動程序。

c.按下 New 按鈕,在窗口中會彈出一個運(yùn)行配置框,然后在 Main 選項(xiàng)卡中,填寫項(xiàng)目名 MyBooks,及應(yīng)用程序名 ve.eclipse.MyBooksApp。

d.選擇 Arguments 選項(xiàng)卡,輸入 XML 文件名的全路徑,當(dāng)應(yīng)用程序啟動時,在 Arguments 選項(xiàng)卡中輸入的程序參數(shù)將被傳遞給 main(String[] args) 方法, 這就是該應(yīng)用程序獲得參數(shù)值的方法。

e.選擇 Run。

f.更改 XML 文件名。

g.按下 Save 按鈕。檢查表格內(nèi)容是否被保存到指定的文件和位置。

h.關(guān)閉 MyBooksApp。

這個練習(xí) 的可選部分也完成了。你會注意到,許多步驟都需要手工編寫代碼將數(shù)據(jù)綁定到用戶界面,尤其是表格模型。相比之下,Application Developer 的可視化編輯器提供了非常簡便的用戶界面 ,利用它,絕大部分代碼都可以自動生成。

結(jié)束語

Application Developer Visual Editor 為我們提供了很多易于使用的工具。利用它,只需對生成的代碼作小小的改動,即可綁定 Swing 可視化組件,如文本域、表格、按鈕。使用文檔模型可以自動設(shè)置文本域中的文本;且表格模型也是自動生成并被添加到表格組件中;操作被自動設(shè)置到按鈕中。相比之下,用 Eclipse 完成同樣的任務(wù),則需要更多的手工處理。您必須創(chuàng)建自己的表格模型,并編寫相關(guān)原代碼,設(shè)置文本域中的文本,為按鈕添加操作 ,并在表格上設(shè)置表格模型,F(xiàn)在, Application Developer 的價(jià)值已經(jīng)很清晰了;您可以馬上用它來簡化 J2EE 應(yīng)用程序的開發(fā)。

最新文章