Básicamente, el proyecto ya ha producido una versión. Aunque es un trabajo marginal, todavía quiero ordenar las cosas utilizadas. Después de todo, he aprendido un poco. El primero es el uso de TableView. RWT es un subconjunto de SWT. Por lo tanto, es posible que RWT no implemente completamente todas las interfaces de SWT ni sea tan completo como SWT. La arquitectura de los dos es diferente, lo que se refleja en la forma de visualización y la interfaz, pero los controles básicos siguen siendo los mismos. Aquí primero aprendemos el uso de algunos controles comunes a través de SWT.
Primero, hablemos de los archivos de biblioteca requeridos por SWT. Incluye: 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) Además, este paquete también contiene org.eclipse.core.runtime. un poco confuso Este paquete también importa. Además, pueden producirse errores de importación de paquetes según la versión. Preste atención a la versión.
El siguiente código es la creación de Tableview, que se cita de "Eclipse Getting Started to Mastery"
+ ¿ampliar copia simple de la vista fuente al portapapeles?
importar org.eclipse.jface.viewers.ColumnWeightData;
importar org.eclipse.jface.viewers.TableLayout;
importar org.eclipse.jface.viewers.TableViewer;
importar org.eclipse.swt.SWT;
importar org.eclipse.swt.layout.FillLayout;
importar org.eclipse.swt.widgets.Display;
importar org.eclipse.swt.widgets.Shell;
importar org.eclipse.swt.widgets.Table;
importar org.eclipse.swt.widgets.TableColumn;
clase pública TableViewer1 {
público estático vacío principal (String [] argumentos) {
nuevo TableViewer1().open();
}
vacío público abierto() {
pantalla final pantalla = nueva pantalla();
shell final shell = nuevo shell();
shell.setSize(500, 150);
//---------------------------------------------
shell.setLayout(nuevo FillLayout());
// Paso uno: crear un objeto TableViewer. Estilo: MULTI permite selecciones múltiples, H_SCROLL tiene barras de desplazamiento horizontales, V_SCROLL tiene barras de desplazamiento verticales, BORDER tiene bordes y FULL_SELECTION selecciona la fila completa.
TableViewer tv = nuevo TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// Paso 2: establecer el método de diseño a través del objeto Tabla contenido en la tabla
Tabla tabla = tv.getTable();
table.setHeaderVisible(true); // Muestra el encabezado de la tabla
table.setLinesVisible(true); // Mostrar líneas de la tabla
Diseño TableLayout = new TableLayout(); // Diseño dedicado a tablas.
table.setLayout(diseño);
// Paso 3: crear columnas de tabla usando la clase TableColumn
layout.addColumnData(new ColumnWeightData(13));//ID ancho de columna 13 píxeles
new TableColumn(table, SWT.NONE).setText("número de identificación");
diseño.addColumnData(new ColumnWeightData(40));
new TableColumn(tabla, SWT.NONE).setText("Nombre");
diseño.addColumnData(new ColumnWeightData(20));
new TableColumn(tabla, SWT.NONE).setText("Género");
diseño.addColumnData(new ColumnWeightData(20));
new TableColumn(tabla, SWT.NONE).setText("Edad");
diseño.addColumnData(new ColumnWeightData(60));
new TableColumn(table, SWT.NONE).setText("Tiempo de creación del registro");
// Paso 4: configurar el contenedor interno y el etiquetador
tv.setContentProvider(nuevo TableViewerContentProvider());
tv.setLabelProvider(nuevo TableViewerLabelProvider());
// Paso 5: use el método setInput de TableViewer para ingresar datos en la tabla
Datos del objeto = PeopleFactory.getPeoples();
tv.setInput(datos);
//---------------------------------------------
shell.open();
mientras (!shell.isDisposed()) {
si (!display.readAndDispatch())
mostrar.dormir();
}
mostrar.dispose();
}
}
importar org.eclipse.jface.viewers.ColumnWeightData;
importar org.eclipse.jface.viewers.TableLayout;
importar org.eclipse.jface.viewers.TableViewer;
importar org.eclipse.swt.SWT;
importar org.eclipse.swt.layout.FillLayout;
importar org.eclipse.swt.widgets.Display;
importar org.eclipse.swt.widgets.Shell;
importar org.eclipse.swt.widgets.Table;
importar org.eclipse.swt.widgets.TableColumn;
clase pública TableViewer1 {
público estático vacío principal (String [] argumentos) {
nuevo TableViewer1().open();
}
vacío público abierto() {
pantalla final pantalla = nueva pantalla();
shell final shell = nuevo shell();
shell.setSize(500, 150);
//---------------------------------------------
shell.setLayout(nuevo FillLayout());
// Paso uno: crear un objeto TableViewer. Estilo: MULTI permite selecciones múltiples, H_SCROLL tiene barras de desplazamiento horizontales, V_SCROLL tiene barras de desplazamiento verticales, BORDER tiene bordes y FULL_SELECTION selecciona la fila completa.
TableViewer tv = nuevo TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// Paso 2: establecer el método de diseño a través del objeto Tabla contenido en la tabla
Tabla tabla = tv.getTable();
table.setHeaderVisible(true); // Muestra el encabezado de la tabla
table.setLinesVisible(true); // Mostrar líneas de la tabla
Diseño TableLayout = new TableLayout(); // Diseño dedicado a tablas.
table.setLayout(diseño);
// Paso 3: crear columnas de tabla usando la clase TableColumn
layout.addColumnData(new ColumnWeightData(13));//ID ancho de columna 13 píxeles
new TableColumn(table, SWT.NONE).setText("número de identificación");
diseño.addColumnData(new ColumnWeightData(40));
new TableColumn(tabla, SWT.NONE).setText("Nombre");
diseño.addColumnData(new ColumnWeightData(20));
new TableColumn(tabla, SWT.NONE).setText("Género");
diseño.addColumnData(new ColumnWeightData(20));
new TableColumn(tabla, SWT.NONE).setText("Edad");
diseño.addColumnData(new ColumnWeightData(60));
new TableColumn(table, SWT.NONE).setText("Tiempo de creación del registro");
// Paso 4: configurar el contenedor interno y el etiquetador
tv.setContentProvider(nuevo TableViewerContentProvider());
tv.setLabelProvider(nuevo TableViewerLabelProvider());
// Paso 5: use el método setInput de TableViewer para ingresar datos en la tabla
Datos del objeto = PeopleFactory.getPeoples();
tv.setInput(datos);
//---------------------------------------------
shell.open();
mientras (!shell.isDisposed()) {
si (!display.readAndDispatch())
mostrar.dormir();
}
mostrar.dispose();
}
}
Las siguientes son las dos clases proporcionadas. Si el código de estas dos clases es pequeño y el servicio es una tabla, se pueden escribir como clases internas:
¿Ver copia simple en el portapapeles?
importar java.util.List;
importar org.eclipse.jface.viewers.IStructuredContentProvider;
importar org.eclipse.jface.viewers.Viewer;
//Contenedor interior. Esta clase filtra y transforma los datos ingresados en el formulario.
//Esta clase tiene tres métodos para implementar la interfaz, entre los cuales getElements es el método principal, los otros dos métodos rara vez se usan, solo una implementación vacía es suficiente
la clase pública TableViewerContentProvider implementa IStructuredContentProvider {
// Filtrar y transformar la entrada del conjunto de datos en la tabla.
// Todos los conjuntos de datos de entrada deben convertirse en matrices. Cada elemento de la matriz es un objeto de entidad, que es un registro en la tabla.
Objeto público [] getElements (elemento de objeto) {
// El elemento de parámetro es la entrada del objeto a través de setInput (entrada de objeto). En este ejemplo, la entrada a setInput es una colección de Lista.
if (elemento instancia de Lista) // Agregar un juicio de tipo Lista
return ((List) element).toArray() // Convierte la lista del conjunto de datos en una matriz.
demás
return new Object[0] //Si no es un tipo de Lista, devuelve una matriz vacía
}
// Este método se activa cuando se cierra el objeto TableViewer
disponer de vacío público() {
}
// Este método se activa cuando TableViewer llama a setInput() nuevamente
public void inputChanged(Visor v, Objeto oldInput, Objeto newInput) {
}
}
importar java.util.List;
importar org.eclipse.jface.viewers.IStructuredContentProvider;
importar org.eclipse.jface.viewers.Viewer;
//Contenedor interior. Esta clase filtra y transforma los datos ingresados en el formulario.
//Esta clase tiene tres métodos para implementar la interfaz, entre los cuales getElements es el método principal, los otros dos métodos rara vez se usan, solo una implementación vacía es suficiente
la clase pública TableViewerContentProvider implementa IStructuredContentProvider {
// Filtrar y transformar la entrada del conjunto de datos en la tabla.
// Todos los conjuntos de datos de entrada deben convertirse en matrices. Cada elemento de la matriz es un objeto de entidad, que es un registro en la tabla.
Objeto público [] getElements (elemento de objeto) {
// El elemento de parámetro es la entrada del objeto a través de setInput (entrada de objeto). En este ejemplo, la entrada a setInput es una colección de Lista.
if (elemento instancia de Lista) // Agregar un juicio de tipo Lista
return ((List) element).toArray() // Convierte la lista del conjunto de datos en una matriz.
demás
return new Object[0] //Si no es un tipo de Lista, devuelve una matriz vacía
}
// Este método se activa cuando se cierra el objeto TableViewer
disponer de vacío público() {
}
// Este método se activa cuando TableViewer llama a setInput() nuevamente
public void inputChanged(Visor v, Objeto oldInput, Objeto newInput) {
}
}
¿Ver copia simple en el portapapeles?
importar org.eclipse.jface.viewers.ILabelProviderListener;
importar org.eclipse.jface.viewers.ITableLabelProvider;
importar org.eclipse.swt.graphics.Image;
// Etiquetador. Si el contenedor interno procesa la entrada del conjunto de datos en el formulario,
// Luego, el etiquetador procesa y transforma un único objeto de entidad en el conjunto de datos, y el etiquetador determina en qué columna de la tabla se muestran los campos del objeto de entidad.
la clase pública TableViewerLabelProvider implementa ITableLabelProvider {
//Crea varias imágenes
Imagen privada [] imágenes = nueva imagen [] {
nueva imagen (nula, "icons/refresh.gif"),
nueva imagen (nula, "icons/star.jpg"),
nueva Imagen(nula, "iconos/luna.jpg") };
// Este método determina qué texto se muestra en cada columna de la tabla para los registros de datos.
//El parámetro del elemento es un objeto de clase de entidad. col es el número de columna de la columna que se va a configurar actualmente, 0 es la primera columna.
cadena pública getColumnText (elemento objeto, int col) {
PeopleEntity o = elemento (PeopleEntity); // conversión de tipo;
if (col == 0)//¿Qué datos deben mostrarse en la primera columna?
devolver o.getId().toString();
si (col == 1)
devolver o.getName();
si (col == 2)
return o.isSex() ? "Hombre": "Mujer";
si (col == 3)
return String.valueOf(o.getAge()); // Convertir tipo int a tipo String
si (col == 4)
devolver o.getCreateDate().toString();
return null; // El método puede devolver un valor nulo
}
// El método getColumnText se usa para mostrar texto y este método se usa para mostrar imágenes.
Imagen pública getColumnImage (elemento objeto, int col) {
PeopleEntity o = elemento (PeopleEntity);
// Solo permite que el registro "Chen Gang" muestre imágenes
if (o.getName().equals("Chen Gang") || o.getName().equals("Zhou Yue")) {
if (col == 0)//La imagen que se mostrará en la primera columna
devolver imágenes[0];
if (col == 2)//Muestra diferentes íconos según el género
devolver o.isSex() ? imágenes[1] : imágenes[2];
}
return null; // El método puede devolver un valor nulo
}
disponer de vacío público() {
// No olvides el principio de los componentes SWT: créalo tú mismo y libéralo tú mismo
para (Imagen imagen: imágenes) {
imagen.dispose();
}
}
//-------------Los siguientes métodos rara vez se utilizan, así que no te preocupes por ellos por ahora y deja que se implementen vacíos------------- ----
public boolean isLabelProperty (elemento objeto, propiedad cadena) {
devolver falso;
}
addListener público vacío (oyente ILabelProviderListener) {
}
removeListener público vacío (oyente ILabelProviderListener) {
}
}
importar org.eclipse.jface.viewers.ILabelProviderListener;
importar org.eclipse.jface.viewers.ITableLabelProvider;
importar org.eclipse.swt.graphics.Image;
// Etiquetador. Si el contenedor interno procesa la entrada del conjunto de datos en el formulario,
// Luego, el etiquetador procesa y transforma un único objeto de entidad en el conjunto de datos, y el etiquetador determina en qué columna de la tabla se muestran los campos del objeto de entidad.
la clase pública TableViewerLabelProvider implementa ITableLabelProvider {
//Crea varias imágenes
Imagen privada [] imágenes = nueva imagen [] {
nueva imagen (nula, "icons/refresh.gif"),
nueva imagen (nula, "icons/star.jpg"),
nueva Imagen(nula, "iconos/luna.jpg") };
// Este método determina qué texto se muestra en cada columna de la tabla para los registros de datos.
//El parámetro del elemento es un objeto de clase de entidad. col es el número de columna de la columna que se va a configurar actualmente, 0 es la primera columna.
cadena pública getColumnText (elemento objeto, int col) {
PeopleEntity o = elemento (PeopleEntity); // conversión de tipo;
if (col == 0)//¿Qué datos deben mostrarse en la primera columna?
devolver o.getId().toString();
si (col == 1)
devolver o.getName();
si (col == 2)
return o.isSex() ? "Hombre": "Mujer";
si (col == 3)
return String.valueOf(o.getAge()); // Convertir tipo int a tipo String
si (col == 4)
devolver o.getCreateDate().toString();
return null; // El método puede devolver un valor nulo
}
// El método getColumnText se usa para mostrar texto y este método se usa para mostrar imágenes.
Imagen pública getColumnImage (elemento objeto, int col) {
PeopleEntity o = elemento (PeopleEntity);
// Solo permite que el registro "Chen Gang" muestre imágenes
if (o.getName().equals("Chen Gang") || o.getName().equals("Zhou Yue")) {
if (col == 0)//La imagen que se mostrará en la primera columna
devolver imágenes[0];
if (col == 2)//Muestra diferentes íconos según el género
devolver o.isSex() ? imágenes[1] : imágenes[2];
}
return null; // El método puede devolver un valor nulo
}
disponer de vacío público() {
// No olvides el principio de los componentes SWT: créalo tú mismo y libéralo tú mismo
para (Imagen imagen: imágenes) {
imagen.dispose();
}
}
//-------------Los siguientes métodos rara vez se utilizan, así que no te preocupes por ellos por ahora y deja que se implementen vacíos------------- ----
public boolean isLabelProperty (elemento objeto, propiedad cadena) {
devolver falso;
}
addListener público vacío (oyente ILabelProviderListener) {
}
removeListener público vacío (oyente ILabelProviderListener) {
}
}
La otra es la clase de entidad. Aquí simplemente escribimos una entidad. Los datos aquí se pueden leer desde la base de datos, pero luego prestamos atención al tipo de contenedor utilizado para almacenar los datos.
Y preste atención a la conversión de tipos.
¿Ver copia simple en el portapapeles?
importar java.util.Fecha;
//Esta clase contiene cinco variables de diferentes tipos de datos, correspondientes a cinco campos en la tabla de la base de datos. La variable es de tipo privado, es decir, sólo puede
// Accedidos por el código interno de la clase, el mundo exterior solo puede acceder a ellos a través de los métodos Setter/Geter correspondientes de estas variables.
clase pública EntidadPersonas {
private Long id; //Código de identificación único, a menudo una columna de ID que se incrementa automáticamente en la base de datos.
nombre de cadena privada //nombre
sexo booleano privado; //Género verdadero masculino, falso femenino
edad int privada; //Edad
fecha privada createDate; //La fecha de creación del registro. El tipo de fecha es java.util.Date, no java.sql.Date
//El siguiente código es el método Setter/Geter de cada campo. Consulte la Sección 3.5.2, estos métodos se pueden generar automáticamente en Eclipse.
público Long getId() { ID de retorno;}
setId vacío público (largo largo1) {id = largo1;}
cadena pública getName() {devolver nombre;}
setName público vacío (cadena cadena) {nombre = cadena;}
public boolean isSex() { devolver sexo;}
setSex público vacío (sexo booleano) { this.sex = sexo }
public int getAge() {edad de retorno;}
public void setAge(int i) {edad = i;}
Fecha pública getCreateDate() {return createDate;}
public void setCreateDate(Fecha fecha) {createDate = fecha;}
}
importar java.util.Fecha;
//Esta clase contiene cinco variables de diferentes tipos de datos, correspondientes a cinco campos en la tabla de la base de datos. La variable es de tipo privado, es decir, sólo puede
// Accedidos por el código interno de la clase, el mundo exterior solo puede acceder a ellos a través de los métodos Setter/Geter correspondientes de estas variables.
clase pública EntidadPersonas {
private Long id; //Código de identificación único, a menudo una columna de ID que se incrementa automáticamente en la base de datos.
nombre de cadena privada //nombre
sexo booleano privado; //Género verdadero masculino, falso femenino
edad int privada; //Edad
fecha privada createDate; //La fecha de creación del registro. El tipo de fecha es java.util.Date, no java.sql.Date
//El siguiente código es el método Setter/Geter de cada campo. Consulte la Sección 3.5.2, estos métodos se pueden generar automáticamente en Eclipse.
público Long getId() { ID de retorno;}
setId vacío público (largo largo1) {id = largo1;}
cadena pública getName() {devolver nombre;}
setName público vacío (cadena cadena) {nombre = cadena;}
public boolean isSex() { devolver sexo;}
setSex público vacío (sexo booleano) { this.sex = sexo }
public int getAge() {edad de retorno;}
public void setAge(int i) {edad = i;}
Fecha pública getCreateDate() {return createDate;}
public void setCreateDate(Fecha fecha) {createDate = fecha;}
}
Además, existe una interfaz encapsulada para obtener datos:
¿Ver copia simple en el portapapeles?
importar java.util.ArrayList;
importar java.util.Fecha;
importar java.util.List;
// Crea una fábrica para objetos PeopleEntity, crea tres objetos PeopleEntry y cárgalos en la colección List para regresar
clase pública PeopleFactory {
public static List<PeopleEntity> getPeoples() { //Método estático de fábrica
Lista<PeopleEntity> lista = new ArrayList<PeopleEntity>();
{ // El primer objeto de clase de entidad
PersonasEntidad o = nueva PersonasEntidad();
o.setId(new Long(1));//El tipo de campo de identificación se define como Long, por lo que debe convertirse
o.setName("Chen Gang");
o.setSex(verdadero);
o.setAge(28);
o.setCreateDate(nueva fecha()); // Fecha actual
lista.add(o);
}
{ // El segundo objeto de clase de entidad
PersonasEntidad o = nueva PersonasEntidad();
o.setId(2L); //Utilice la función de boxeo automático de JDK5.0 para guardar la conversión de objeto largo a largo
o.setName("lectura semanal");
o.setSex(falso);
o.setAge(18);
o.setCreateDate(nueva fecha());
lista.add(o);
}
{ // El tercer objeto de clase de entidad
PersonasEntidad o = nueva PersonasEntidad();
o.setId(3L);
o.setName("Chen Changen");
o.setSex(verdadero);
o.setAge(27);
o.setCreateDate(nueva fecha());
lista.add(o);
}
lista de devolución;
}
}
Este artículo proviene del blog de CSDN. Indique la fuente al reimprimir: http://blog.csdn.net/youxigogo/archive/2009/12/30/5105179.aspx.
-