国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

TableView的使用

2019-11-17 03:55:14
字體:
來源:轉載
供稿:網友
項目現在基本出了一個版本,雖然做的是邊緣工作,但是用到的東西還是整理一下吧,畢竟也算學了一點點東西。首先是TableView的使用。RWT是SWT的子集,因此,RWT中可能沒有完全實現SWT的全部接口,也沒有SWT那么完善。兩者的架構不同,表現在顯示形式,界面也不盡相同,但是基本的控件的時候還是相同的。這里首先通過SWT來學習一些常用控件的使用。

            首先說下SWT需要的庫文件。包括: org.eclipse.swt_3.x.x.jar         org.eclipse.jface_3.x.x.jar    


      org.eclipse.core.runtime_3.x.x.jar          org.eclipse.ui.workbench_3.x.x.jar  (org.eclipse.equinox.common_3.x.x.jar)另外這個包中也包含org.eclipse.core.runtime 感覺組織的有點混亂,這個包也要導入。另外版本的不同也可能出現要包導入錯誤,注意下版本。

下面的代碼就是Tableview的創建,是從《eclipse入門到精通》引用的


+ expand sourceview plaincopy to clipboardPRint?
import org.eclipse.jface.viewers.ColumnWeightData;   
import org.eclipse.jface.viewers.TableLayout;   
import org.eclipse.jface.viewers.TableViewer;   
import org.eclipse.swt.SWT;   
import org.eclipse.swt.layout.FillLayout;   
import org.eclipse.swt.widgets.Display;   
import org.eclipse.swt.widgets.Shell;   
import org.eclipse.swt.widgets.Table;   
import org.eclipse.swt.widgets.TableColumn;   
public class TableViewer1 {   
    public static void main(String[] args) {   
        new TableViewer1().open();   
    }   
    public void open() {   
        final Display display = new Display();   
        final Shell shell = new Shell();   
        shell.setSize(500, 150);   
        // ------------------------------------------   
        shell.setLayout(new FillLayout());   
        // 第一步:創建一個TableViewer對象。式樣:MULTI可多選、H_SCROLL有水平滾動條、V_SCROLL有垂直滾動條、BORDER有邊框、FULL_SELECTION整行選擇   
        TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);   
        // 第二步:通過表格內含的Table對象設置布局方式   
        Table table = tv.getTable();   
        table.setHeaderVisible(true); // 顯示表頭   
        table.setLinesVisible(true); // 顯示表格線   
        TableLayout layout = new TableLayout(); // 專用于表格的布局   
        table.setLayout(layout);   
        // 第三步:用TableColumn類創建表格列   
        layout.addColumnData(new ColumnWeightData(13));// ID列寬13像素   
        new TableColumn(table, SWT.NONE).setText("ID號");   
        layout.addColumnData(new ColumnWeightData(40));   
        new TableColumn(table, SWT.NONE).setText("姓名");   
        layout.addColumnData(new ColumnWeightData(20));   
        new TableColumn(table, SWT.NONE).setText("性別");   
        layout.addColumnData(new ColumnWeightData(20));   
        new TableColumn(table, SWT.NONE).setText("年齡");   
        layout.addColumnData(new ColumnWeightData(60));   
        new TableColumn(table, SWT.NONE).setText("記錄建立時間");   
        // 第四步:設置內容器和標簽器   
        tv.setContentProvider(new TableViewerContentProvider());   
        tv.setLabelProvider(new TableViewerLabelProvider());   
        // 第五步:用TableViewer的setInput方法將數據輸入到表格   
        Object data = PeopleFactory.getPeoples();   
        tv.setInput(data);   
        // ------------------------------------------   
        shell.open();   
        while (!shell.isDisposed()) {   
            if (!display.readAndDispatch())   
                display.sleep();   
        }   
        display.dispose();   
    }   
}  
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
public class TableViewer1 {
public static void main(String[] args) {
new TableViewer1().open();
}
public void open() {
final Display display = new Display();
final Shell shell = new Shell();
shell.setSize(500, 150);
// ------------------------------------------
shell.setLayout(new FillLayout());
// 第一步:創建一個TableViewer對象。式樣:MULTI可多選、H_SCROLL有水平滾動條、V_SCROLL有垂直滾動條、BORDER有邊框、FULL_SELECTION整行選擇
TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// 第二步:通過表格內含的Table對象設置布局方式
Table table = tv.getTable();
table.setHeaderVisible(true); // 顯示表頭
table.setLinesVisible(true); // 顯示表格線
TableLayout layout = new TableLayout(); // 專用于表格的布局
table.setLayout(layout);
// 第三步:用TableColumn類創建表格列
layout.addColumnData(new ColumnWeightData(13));// ID列寬13像素
new TableColumn(table, SWT.NONE).setText("ID號");
layout.addColumnData(new ColumnWeightData(40));
new TableColumn(table, SWT.NONE).setText("姓名");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("性別");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("年齡");
layout.addColumnData(new ColumnWeightData(60));
new TableColumn(table, SWT.NONE).setText("記錄建立時間");
// 第四步:設置內容器和標簽器
tv.setContentProvider(new TableViewerContentProvider());
tv.setLabelProvider(new TableViewerLabelProvider());
// 第五步:用TableViewer的setInput方法將數據輸入到表格
Object data = PeopleFactory.getPeoples();
tv.setInput(data);
// ------------------------------------------
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}




  


下面分別是那2個提供類,這2個在類如果代碼較少,服務與1個表時候可以寫成內部類:

view plaincopy to clipboardprint?
import java.util.List;   
import org.eclipse.jface.viewers.IStructuredContentProvider;   
import org.eclipse.jface.viewers.Viewer;   
//內容器。由此類對輸入到表格的數據進行篩選和轉化。   
//此類要實現接口的三種方法, 其中getElements是主要方法,另外兩個方法很少用到,空實現就行了   
public class TableViewerContentProvider implements IStructuredContentProvider {   
    // 對輸入到表格的數據集合進行篩選和轉。   
    // 輸入的數據集全部要轉化成數組,每一個數組元素就是一個實體類對象,也就是表格中的一條記錄。   
    public Object[] getElements(Object element) {   
        // 參數element就是通過setInput(Object input)輸入的對象input,本例中輸入給setInput是List集合   
        if (element instanceof List)// 加一個List類型判斷   
            return ((List) element).toArray(); // 將數據集List轉化為數組   
        else  
            return new Object[0]; // 如非List類型則返回一個空數組   
    }   
    // 當TableViewer對象被關閉時觸發執行此方法   
    public void dispose() {   
    }   
    // 當TableViewer再次調用setInput()時觸發執行此方法   
    public void inputChanged(Viewer v, Object oldInput, Object newInput) {   
    }   
}  
import java.util.List;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
//內容器。由此類對輸入到表格的數據進行篩選和轉化。
//此類要實現接口的三種方法, 其中getElements是主要方法,另外兩個方法很少用到,空實現就行了
public class TableViewerContentProvider implements IStructuredContentProvider {
// 對輸入到表格的數據集合進行篩選和轉。
// 輸入的數據集全部要轉化成數組,每一個數組元素就是一個實體類對象,也就是表格中的一條記錄。
public Object[] getElements(Object element) {
// 參數element就是通過setInput(Object input)輸入的對象input,本例中輸入給setInput是List集合
if (element instanceof List)// 加一個List類型判斷
return ((List) element).toArray(); // 將數據集List轉化為數組
else
return new Object[0]; // 如非List類型則返回一個空數組
}
// 當TableViewer對象被關閉時觸發執行此方法
public void dispose() {
}
// 當TableViewer再次調用setInput()時觸發執行此方法
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
}
}

view plaincopy to clipboardprint?
import org.eclipse.jface.viewers.ILabelProviderListener;   
import org.eclipse.jface.viewers.ITableLabelProvider;   
import org.eclipse.swt.graphics.Image;   
//標簽器。如果說內容器是對輸入表格的數據集作處理,   
//那么標簽器則是對數據集中的單個實體對象進行處理和轉化,由標簽器來決定實體對象中的字段顯示在表格的哪一列中。   
public class TableViewerLabelProvider implements ITableLabelProvider {   
    // 創建幾個圖像   
    private Image[] images = new Image[] {   
            new Image(null, "icons/refresh.gif"),   
            new Image(null, "icons/star.jpg"),   
            new Image(null, "icons/moon.jpg") };   
    // 由此方法決定數據記錄在表格的每一列顯示什么文字。   
    // element參數是一個實體類對象。col是當前要設置的列的列號,0是第一列。   
    public String getColumnText(Object element, int col) {   
        PeopleEntity o = (PeopleEntity) element; // 類型轉換   
        if (col == 0)// 第一列要顯示什么數據   
            return o.getId().toString();   
        if (col == 1)   
            return o.getName();   
        if (col == 2)   
            return o.isSex() ? "男" : "女";   
        if (col == 3)   
            return String.valueOf(o.getAge()); // 將int型轉為String型   
        if (col == 4)   
            return o.getCreateDate().toString();   
        return null; // 方法可以返回空值   
    }   
    // getColumnText方法用于顯示文字,本方法用于顯示圖片。   
    public Image getColumnImage(Object element, int col) {   
        PeopleEntity o = (PeopleEntity) element;   
        // 只讓“陳剛”這條記錄顯示圖片   
        if (o.getName().equals("陳剛") || o.getName().equals("周閱")) {   
            if (col == 0)// 第一列要顯示的圖片   
                return images[0];   
            if (col == 2)// 根據性別顯示不同的圖標   
                return o.isSex() ? images[1] : images[2];   
        }   
        return null; // 方法可以返回空值   
    }   
    public void dispose() {   
        // 別忘了SWT組件的原則:自己創建,自釋放   
        for (Image image : images) {   
            image.dispose();   
        }   
    }   
    // -------------以下方法很少使用,先不用管,讓它們空實現-----------------   
    public boolean isLabelProperty(Object element, String property) {   
        return false;   
    }   
    public void addListener(ILabelProviderListener listener) {   
    }   
    public void removeListener(ILabelProviderListener listener) {   
    }   
}  
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Image;
//標簽器。如果說內容器是對輸入表格的數據集作處理,
//那么標簽器則是對數據集中的單個實體對象進行處理和轉化,由標簽器來決定實體對象中的字段顯示在表格的哪一列中。
public class TableViewerLabelProvider implements ITableLabelProvider {
// 創建幾個圖像
private Image[] images = new Image[] {
new Image(null, "icons/refresh.gif"),
new Image(null, "icons/star.jpg"),
new Image(null, "icons/moon.jpg") };
// 由此方法決定數據記錄在表格的每一列顯示什么文字。
// element參數是一個實體類對象。col是當前要設置的列的列號,0是第一列。
public String getColumnText(Object element, int col) {
PeopleEntity o = (PeopleEntity) element; // 類型轉換
if (col == 0)// 第一列要顯示什么數據
return o.getId().toString();
if (col == 1)
return o.getName();
if (col == 2)
return o.isSex() ? "男" : "女";
if (col == 3)
return String.valueOf(o.getAge()); // 將int型轉為String型
if (col == 4)
return o.getCreateDate().toString();
return null; // 方法可以返回空值
}
// getColumnText方法用于顯示文字,本方法用于顯示圖片。
public Image getColumnImage(Object element, int col) {
PeopleEntity o = (PeopleEntity) element;
// 只讓“陳剛”這條記錄顯示圖片
if (o.getName().equals("陳剛") || o.getName().equals("周閱")) {
if (col == 0)// 第一列要顯示的圖片
return images[0];
if (col == 2)// 根據性別顯示不同的圖標
return o.isSex() ? images[1] : images[2];
}
return null; // 方法可以返回空值
}
public void dispose() {
// 別忘了SWT組件的原則:自己創建,自釋放
for (Image image : images) {
image.dispose();
}
}
// -------------以下方法很少使用,先不用管,讓它們空實現-----------------
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void addListener(ILabelProviderListener listener) {
}
public void removeListener(ILabelProviderListener listener) {
}
}




另外就是實體類,這里只是簡單的寫了一個實體,這里的數據可以從數據庫中讀取,但是那樣注意數據的存儲使用的容器類型,

并注意類型的轉換。

view plaincopy to clipboardprint?
import java.util.Date;   
//本類包含五個不同數據類型的變量,分別對應數據庫表中的五個字段。變量為private型,即只能   
//由類的內部代碼訪問,外界只能通過這些變量相應的Setter/Geter方法來訪問它們   
public class PeopleEntity {   
    private Long id; //惟一識別碼,在數據庫里常為自動遞增的ID列   
    private String name; //姓名   
    private boolean sex; //性別 true男,flase女   
    private int age; //年齡   
    private Date createDate; //記錄的建立日期。Date類型是java.util.Date,而不是java.sql.Date   
       
    //以下代碼為字段各自的Setter/Geter方法。參考第3.5.2節,這些方法在Eclipse可自動生成。   
    public Long getId() { return id;}   
    public void setId(Long long1) {id = long1;}   
    public String getName() {return name;}   
    public void setName(String string) {name = string;}   
    public boolean isSex() { return sex;}   
    public void setSex(boolean sex) { this.sex = sex; }   
    public int getAge() {return age;}   
    public void setAge(int i) {age = i;}   
    public Date getCreateDate() {return createDate;}   
    public void setCreateDate(Date date) {createDate = date;}   
}  
import java.util.Date;
//本類包含五個不同數據類型的變量,分別對應數據庫表中的五個字段。變量為private型,即只能
//由類的內部代碼訪問,外界只能通過這些變量相應的Setter/Geter方法來訪問它們
public class PeopleEntity {
private Long id; //惟一識別碼,在數據庫里常為自動遞增的ID列
private String name; //姓名
private boolean sex; //性別 true男,flase女
private int age; //年齡
private Date createDate; //記錄的建立日期。Date類型是java.util.Date,而不是java.sql.Date

//以下代碼為字段各自的Setter/Geter方法。參考第3.5.2節,這些方法在Eclipse可自動生成。
public Long getId() { return id;}
public void setId(Long long1) {id = long1;}
public String getName() {return name;}
public void setName(String string) {name = string;}
public boolean isSex() { return sex;}
public void setSex(boolean sex) { this.sex = sex; }
public int getAge() {return age;}
public void setAge(int i) {age = i;}
public Date getCreateDate() {return createDate;}
public void setCreateDate(Date date) {createDate = date;}
}




另外是封裝的獲取數據的接口:

view plaincopy to clipboardprint?
import java.util.ArrayList;   
import java.util.Date;   
import java.util.List;   
//創建PeopleEntity對象的工廠,創建三個PeopleEntry對象,并裝入List集合返回   
public class PeopleFactory {   
    public static List<PeopleEntity> getPeoples() { // 工廠的靜態方法   
        List<PeopleEntity> list = new ArrayList<PeopleEntity>();   
        { // 第1個實體類對象   
            PeopleEntity o = new 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 = new 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 = new PeopleEntity();   
            o.setId(3L);   
            o.setName("陳常恩");   
            o.setSex(true);   
            o.setAge(27);   
            o.setCreateDate(new Date());   
            list.add(o);   
        }   
        return list;   
    }   
}  



本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/youxigogo/archive/2009/12/30/5105179.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 项城市| 大英县| 和顺县| 晋宁县| 田东县| 潢川县| 土默特左旗| 巴塘县| 沅江市| 盐池县| 珲春市| 玉林市| 彰化市| 北安市| 彭阳县| 岫岩| 德令哈市| 手机| 开远市| 资阳市| 达州市| 仁寿县| 兴安盟| 白玉县| 丹凤县| 东丰县| 咸阳市| 恭城| 易门县| 四川省| 长沙市| 且末县| 邢台县| 贡嘎县| 洞口县| 淮北市| 得荣县| 赤城县| 汪清县| 南陵县| 临海市|