Le projet a essentiellement produit une version maintenant. Bien qu'il s'agisse d'un travail marginal, je veux quand même faire le tri dans les choses utilisées. Après tout, j'ai un peu appris. La première est l'utilisation de TableView. RWT est un sous-ensemble de SWT. Par conséquent, RWT peut ne pas implémenter entièrement toutes les interfaces de SWT, ni être aussi complet que SWT. L'architecture des deux est différente, comme en témoigne la forme d'affichage et l'interface, mais les commandes de base sont toujours les mêmes. Ici, nous apprenons d'abord l'utilisation de certains contrôles courants via SWT.
Parlons d’abord des fichiers de bibliothèque requis par SWT. Comprend : 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) De plus, ce package contient également org.eclipse.core.runtime. un peu déroutant. Ce package est également importé. De plus, des erreurs d'importation de packages peuvent survenir selon la version. Veuillez faire attention à la version.
Le code suivant est la création de Tableview, cité dans « Eclipse Getting Started to Mastery »
+ étendre sourceview plaincopy à clipboardprint ?
importer org.eclipse.jface.viewers.ColumnWeightData ;
importer org.eclipse.jface.viewers.TableLayout ;
importer org.eclipse.jface.viewers.TableViewer ;
importer org.eclipse.swt.SWT ;
importer org.eclipse.swt.layout.FillLayout ;
importer org.eclipse.swt.widgets.Display ;
importer org.eclipse.swt.widgets.Shell ;
importer org.eclipse.swt.widgets.Table ;
importer org.eclipse.swt.widgets.TableColumn ;
classe publique TableViewer1 {
public static void main (String[] arguments) {
new TableViewer1().open();
}
public vide ouvert() {
affichage final display = new Display();
shell final shell = new Shell();
shell.setSize(500, 150);
//---------------------------------------------
shell.setLayout(nouveau FillLayout());
// Première étape : créer un objet TableViewer. Style : MULTI permet des sélections multiples, H_SCROLL a des barres de défilement horizontales, V_SCROLL a des barres de défilement verticales, BORDER a des bordures et FULL_SELECTION sélectionne la ligne entière.
TableViewer tv = nouveau TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// Étape 2 : Définir la méthode de mise en page via l'objet Table contenu dans le tableau
Table table = tv.getTable();
table.setHeaderVisible(true); // Afficher l'en-tête du tableau
table.setLinesVisible(true); // Afficher les lignes du tableau
TableLayout layout = new TableLayout(); // Disposition dédiée aux tableaux
table.setLayout(layout);
// Étape 3 : Créer des colonnes de tableau à l'aide de la classe TableColumn
layout.addColumnData(new ColumnWeightData(13));//ID largeur de colonne 13 pixels
new TableColumn(table, SWT.NONE).setText("Numéro d'identification");
layout.addColumnData (nouveau ColumnWeightData (40));
new TableColumn(table, SWT.NONE).setText("Nom");
layout.addColumnData (nouveau ColumnWeightData (20));
new TableColumn(table, SWT.NONE).setText("Gender");
layout.addColumnData (nouveau ColumnWeightData (20));
new TableColumn(table, SWT.NONE).setText("Âge");
layout.addColumnData (nouveau ColumnWeightData (60));
new TableColumn(table, SWT.NONE).setText("Heure de création de l'enregistrement");
// Étape 4 : Configurer le conteneur interne et le tagger
tv.setContentProvider(nouveau TableViewerContentProvider());
tv.setLabelProvider(nouveau TableViewerLabelProvider());
// Étape 5 : Utilisez la méthode setInput de TableViewer pour saisir des données dans la table
Données d'objet = PeopleFactory.getPeoples();
tv.setInput(données);
//---------------------------------------------
shell.open();
tandis que (!shell.isDisposed()) {
si (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
importer org.eclipse.jface.viewers.ColumnWeightData ;
importer org.eclipse.jface.viewers.TableLayout ;
importer org.eclipse.jface.viewers.TableViewer ;
importer org.eclipse.swt.SWT ;
importer org.eclipse.swt.layout.FillLayout ;
importer org.eclipse.swt.widgets.Display ;
importer org.eclipse.swt.widgets.Shell ;
importer org.eclipse.swt.widgets.Table ;
importer org.eclipse.swt.widgets.TableColumn ;
classe publique TableViewer1 {
public static void main (String[] arguments) {
new TableViewer1().open();
}
public vide ouvert() {
affichage final display = new Display();
shell final shell = new Shell();
shell.setSize(500, 150);
//---------------------------------------------
shell.setLayout(nouveau FillLayout());
// Première étape : créer un objet TableViewer. Style : MULTI permet des sélections multiples, H_SCROLL a des barres de défilement horizontales, V_SCROLL a des barres de défilement verticales, BORDER a des bordures et FULL_SELECTION sélectionne la ligne entière.
TableViewer tv = nouveau TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// Étape 2 : Définir la méthode de mise en page via l'objet Table contenu dans le tableau
Table table = tv.getTable();
table.setHeaderVisible(true); // Afficher l'en-tête du tableau
table.setLinesVisible(true); // Afficher les lignes du tableau
TableLayout layout = new TableLayout(); // Disposition dédiée aux tableaux
table.setLayout(layout);
// Étape 3 : Créer des colonnes de tableau à l'aide de la classe TableColumn
layout.addColumnData(new ColumnWeightData(13));//ID largeur de colonne 13 pixels
new TableColumn(table, SWT.NONE).setText("Numéro d'identification");
layout.addColumnData (nouveau ColumnWeightData (40));
new TableColumn(table, SWT.NONE).setText("Nom");
layout.addColumnData (nouveau ColumnWeightData (20));
new TableColumn(table, SWT.NONE).setText("Gender");
layout.addColumnData (nouveau ColumnWeightData (20));
new TableColumn(table, SWT.NONE).setText("Âge");
layout.addColumnData (nouveau ColumnWeightData (60));
new TableColumn(table, SWT.NONE).setText("Heure de création de l'enregistrement");
// Étape 4 : Configurer le conteneur interne et le tagger
tv.setContentProvider(nouveau TableViewerContentProvider());
tv.setLabelProvider(nouveau TableViewerLabelProvider());
// Étape 5 : Utilisez la méthode setInput de TableViewer pour saisir des données dans la table
Données d'objet = PeopleFactory.getPeoples();
tv.setInput(données);
//---------------------------------------------
shell.open();
tandis que (!shell.isDisposed()) {
si (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
Voici les deux classes fournies. Si le code de ces deux classes est petit et que le service est une table, elles peuvent être écrites en tant que classes internes :
afficher la copie ordinaire dans le presse-papiers ?
importer java.util.List ;
importer org.eclipse.jface.viewers.IStructuredContentProvider ;
importer org.eclipse.jface.viewers.Viewer ;
//Conteneur interne. Cette classe filtre et transforme les données saisies dans le formulaire.
//Cette classe a trois méthodes pour implémenter l'interface, parmi lesquelles getElements est la méthode principale, les deux autres méthodes sont rarement utilisées, une simple implémentation vide suffit
classe publique TableViewerContentProvider implémente IStructuredContentProvider {
// Filtre et transforme l'entrée de l'ensemble de données en table.
// Tous les ensembles de données d'entrée doivent être convertis en tableaux. Chaque élément du tableau est un objet d'entité, qui est un enregistrement dans la table.
public Object[] getElements (élément d'objet) {
// L'élément de paramètre est l'entrée d'objet via setInput (Entrée d'objet). Dans cet exemple, l'entrée de setInput est une collection List.
if (élément instance de List) // Ajouter un jugement de type List
return ((List) element).toArray(); // Convertit l'ensemble de données List en un tableau
autre
return new Object[0]; //S'il ne s'agit pas d'un type List, renvoie un tableau vide
}
// Cette méthode est déclenchée lorsque l'objet TableViewer est fermé
public void dispose() {
}
// Cette méthode est déclenchée lorsque TableViewer appelle à nouveau setInput()
public void inputChanged (Viewer v, Objet oldInput, Objet newInput) {
}
}
importer java.util.List ;
importer org.eclipse.jface.viewers.IStructuredContentProvider ;
importer org.eclipse.jface.viewers.Viewer ;
//Conteneur interne. Cette classe filtre et transforme les données saisies dans le formulaire.
//Cette classe a trois méthodes pour implémenter l'interface, parmi lesquelles getElements est la méthode principale, les deux autres méthodes sont rarement utilisées, une simple implémentation vide suffit
classe publique TableViewerContentProvider implémente IStructuredContentProvider {
// Filtre et transforme l'entrée de l'ensemble de données en table.
// Tous les ensembles de données d'entrée doivent être convertis en tableaux. Chaque élément du tableau est un objet d'entité, qui est un enregistrement dans la table.
public Object[] getElements (élément d'objet) {
// L'élément de paramètre est l'entrée d'objet via setInput (Entrée d'objet). Dans cet exemple, l'entrée de setInput est une collection List.
if (élément instance de List) // Ajouter un jugement de type List
return ((List) element).toArray(); // Convertit l'ensemble de données List en un tableau
autre
return new Object[0]; //S'il ne s'agit pas d'un type List, renvoie un tableau vide
}
// Cette méthode est déclenchée lorsque l'objet TableViewer est fermé
public void dispose() {
}
// Cette méthode est déclenchée lorsque TableViewer appelle à nouveau setInput()
public void inputChanged (Viewer v, Objet oldInput, Objet newInput) {
}
}
afficher la copie ordinaire dans le presse-papiers ?
importer org.eclipse.jface.viewers.ILabelProviderListener ;
importer org.eclipse.jface.viewers.ITableLabelProvider ;
importer org.eclipse.swt.graphics.Image ;
//Tagueur. Si le conteneur interne traite l'ensemble de données saisi dans le formulaire,
//Ensuite, le tagueur traite et transforme un seul objet d'entité dans l'ensemble de données, et le tagueur détermine dans quelle colonne du tableau les champs de l'objet d'entité sont affichés.
classe publique TableViewerLabelProvider implémente ITableLabelProvider {
//Créer plusieurs images
image privée[] images = nouvelle image[] {
nouvelle image (null, "icons/refresh.gif"),
nouvelle image (null, "icons/star.jpg"),
nouvelle image(null, "icons/moon.jpg") };
// Cette méthode détermine quel texte est affiché dans chaque colonne du tableau pour les enregistrements de données.
//Le paramètre element est un objet de classe d'entité. col est le numéro de colonne de la colonne actuellement à définir, 0 est la première colonne.
public String getColumnText (élément objet, col int) {
PeopleEntity o = (PeopleEntity) élément ; // conversion de type
if (col == 0)//Quelles données doivent être affichées dans la première colonne ?
return o.getId().toString();
si (col == 1)
return o.getName();
si (col == 2)
return o.isSex() ? "Homme" : "Femme";
si (col == 3)
return String.valueOf(o.getAge()); // Convertit le type int en type String
si (col == 4)
return o.getCreateDate().toString();
return null ; // La méthode peut renvoyer une valeur nulle
}
// La méthode getColumnText est utilisée pour afficher du texte et cette méthode est utilisée pour afficher des images.
public Image getColumnImage (élément objet, col int) {
PeopleEntity o = élément (PeopleEntity) ;
// Laisser uniquement l'enregistrement "Chen Gang" afficher des images
if (o.getName().equals("Chen Gang") || o.getName().equals("Zhou Yue")) {
if (col == 0)//L'image à afficher dans la première colonne
renvoyer des images[0] ;
if (col == 2)//Afficher différentes icônes en fonction du sexe
return o.isSex() ? images[1] : images[2];
}
return null ; // La méthode peut renvoyer une valeur nulle
}
public void dispose() {
// N'oubliez pas le principe des composants SWT : créez-le vous-même et publiez-le vous-même
pour (Image image : images) {
image.dispose();
}
}
//-------------Les méthodes suivantes sont rarement utilisées, alors ne vous en souciez pas pour l'instant et laissez-les être implémentées vides------------- ----
public boolean isLabelProperty (élément Object, propriété String) {
renvoie faux ;
}
public void addListener (écouteur ILabelProviderListener) {
}
public void removeListener (écouteur ILabelProviderListener) {
}
}
importer org.eclipse.jface.viewers.ILabelProviderListener ;
importer org.eclipse.jface.viewers.ITableLabelProvider ;
importer org.eclipse.swt.graphics.Image ;
//Tagueur. Si le conteneur interne traite l'ensemble de données saisi dans le formulaire,
//Ensuite, le tagueur traite et transforme un seul objet d'entité dans l'ensemble de données, et le tagueur détermine dans quelle colonne du tableau les champs de l'objet d'entité sont affichés.
classe publique TableViewerLabelProvider implémente ITableLabelProvider {
//Créer plusieurs images
image privée[] images = nouvelle image[] {
nouvelle image (null, "icons/refresh.gif"),
nouvelle image (null, "icons/star.jpg"),
nouvelle image(null, "icons/moon.jpg") };
// Cette méthode détermine quel texte est affiché dans chaque colonne du tableau pour les enregistrements de données.
//Le paramètre element est un objet de classe d'entité. col est le numéro de colonne de la colonne actuellement à définir, 0 est la première colonne.
public String getColumnText (élément objet, col int) {
PeopleEntity o = (PeopleEntity) élément ; // conversion de type
if (col == 0)//Quelles données doivent être affichées dans la première colonne ?
return o.getId().toString();
si (col == 1)
return o.getName();
si (col == 2)
return o.isSex() ? "Homme" : "Femme";
si (col == 3)
return String.valueOf(o.getAge()); // Convertit le type int en type String
si (col == 4)
return o.getCreateDate().toString();
return null ; // La méthode peut renvoyer une valeur nulle
}
// La méthode getColumnText est utilisée pour afficher du texte et cette méthode est utilisée pour afficher des images.
public Image getColumnImage (élément objet, col int) {
PeopleEntity o = élément (PeopleEntity) ;
// Laisser uniquement l'enregistrement "Chen Gang" afficher des images
if (o.getName().equals("Chen Gang") || o.getName().equals("Zhou Yue")) {
if (col == 0)//L'image à afficher dans la première colonne
renvoyer des images[0] ;
if (col == 2)//Afficher différentes icônes en fonction du sexe
return o.isSex() ? images[1] : images[2];
}
return null ; // La méthode peut renvoyer une valeur nulle
}
public void dispose() {
// N'oubliez pas le principe des composants SWT : créez-le vous-même et publiez-le vous-même
pour (Image image : images) {
image.dispose();
}
}
//-------------Les méthodes suivantes sont rarement utilisées, alors ne vous en souciez pas pour l'instant et laissez-les être implémentées vides------------- ----
public boolean isLabelProperty (élément Object, propriété String) {
renvoie faux ;
}
public void addListener (écouteur ILabelProviderListener) {
}
public void removeListener (écouteur ILabelProviderListener) {
}
}
L'autre est la classe d'entité. Ici, nous écrivons simplement une entité. Les données ici peuvent être lues à partir de la base de données, mais faites ensuite attention au type de conteneur utilisé pour stocker les données.
Et faites attention à la conversion de type.
afficher la copie ordinaire dans le presse-papiers ?
importer java.util.Date ;
//Cette classe contient cinq variables de types de données différents, correspondant à cinq champs de la table de la base de données. La variable est de type privé, c'est-à-dire qu'elle ne peut
//Accès par le code interne de la classe, le monde extérieur ne peut y accéder que via les méthodes Setter/Geter correspondantes de ces variables.
classe publique PeopleEntity {
private Long id ; //Code d'identification unique, souvent une colonne ID incrémentée automatiquement dans la base de données
nom de chaîne privée ; //nom
sexe booléen privé ; // Genre vrai mâle, faux femelle
âge int privé ; //Âge
private Date createDate; //La date de création de l'enregistrement. Le type de date est java.util.Date, pas java.sql.Date
//Le code suivant est la méthode Setter/Geter de chaque champ. Reportez-vous à la section 3.5.2, ces méthodes peuvent être générées automatiquement dans Eclipse.
public Long getId() { identifiant de retour ;}
public void setId (Long long1) {id = long1;}
public String getName() {nom de retour ;}
public void setName (String string) {name = string;}
public boolean isSex() { return sex;}
public void setSex (sexe booléen) { this.sex = sexe }
public int getAge() {âge de retour ;}
public void setAge(int i) {age = i;}
Date publique getCreateDate() {return createDate;}
public void setCreateDate(Date date) {createDate = date;}
}
importer java.util.Date ;
//Cette classe contient cinq variables de types de données différents, correspondant à cinq champs de la table de la base de données. La variable est de type privé, c'est-à-dire qu'elle ne peut
//Accès par le code interne de la classe, le monde extérieur ne peut y accéder que via les méthodes Setter/Geter correspondantes de ces variables.
classe publique PeopleEntity {
private Long id ; //Code d'identification unique, souvent une colonne ID incrémentée automatiquement dans la base de données
nom de chaîne privée ; //nom
sexe booléen privé ; // Genre vrai mâle, faux femelle
âge int privé ; //Âge
private Date createDate; //La date de création de l'enregistrement. Le type de date est java.util.Date, pas java.sql.Date
//Le code suivant est la méthode Setter/Geter de chaque champ. Reportez-vous à la section 3.5.2, ces méthodes peuvent être générées automatiquement dans Eclipse.
public Long getId() { identifiant de retour ;}
public void setId (Long long1) {id = long1;}
public String getName() {nom de retour ;}
public void setName (String string) {name = string;}
public boolean isSex() { return sex;}
public void setSex (sexe booléen) { this.sex = sexe }
public int getAge() {âge de retour ;}
public void setAge(int i) {age = i;}
Date publique getCreateDate() {return createDate;}
public void setCreateDate(Date date) {createDate = date;}
}
De plus, il existe une interface encapsulée pour obtenir des données :
afficher la copie ordinaire dans le presse-papiers ?
importer java.util.ArrayList ;
importer java.util.Date ;
importer java.util.List ;
//Créez une fabrique pour les objets PeopleEntity, créez trois objets PeopleEntry et chargez-les dans la collection List pour renvoyer
classe publique PeopleFactory {
public static List<PeopleEntity> getPeoples() { //Méthode statique de l'usine
List<PeopleEntity> list = new ArrayList<PeopleEntity>();
{ // Le premier objet de classe d'entité
PeopleEntity o = new PeopleEntity();
o.setId(new Long(1));//Le type de champ id est défini comme Long, il doit donc être converti
o.setName("Chen Gang");
o.setSex(true);
o.setAge(28);
o.setCreateDate(new Date()); // Date actuelle
list.add(o);
}
{ // Le deuxième objet de classe d'entité
PeopleEntity o = new PeopleEntity();
o.setId(2L); //Utilisez la fonction de boxe automatique du JDK5.0 pour enregistrer la conversion d'un objet long en objet Long
o.setName("lecture hebdomadaire");
o.setSex(faux);
o.setAge(18);
o.setCreateDate(new Date());
list.add(o);
}
{ // Le troisième objet de classe d'entité
PeopleEntity o = new PeopleEntity();
o.setId(3L);
o.setName("Chen Changen");
o.setSex(true);
o.setAge(27);
o.setCreateDate(new Date());
list.add(o);
}
liste de retour ;
}
}
Cet article provient du blog CSDN Veuillez indiquer la source lors de la réimpression : http://blog.csdn.net/youxigogo/archive/2009/12/30/5105179.aspx.
-