Unterschiede
Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.
| swt-jface:table 2008/05/21 23:14 | swt-jface:table 2020/01/22 20:59 aktuell | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Table in ScrolledForm ====== | + | [[swt-jface:swt-jface|Java - SWT/JFace]]\\ |
| + | ====== Table ====== | ||
| //org.eclipse.swt.widgets.Table//\\ | //org.eclipse.swt.widgets.Table//\\ | ||
| - | //org.eclipse.ui.forms.widgets.ScrolledForm//\\ | + | {{:swt-jface:table.png|}}\\ |
| - | <code java> | + | \\ |
| - | public void createControl(Composite parent){ | + | <html> |
| - | Composite composite = new Composite(parent, SWT.NULL); | + | <script type="text/javascript"><!-- |
| + | google_ad_client="pub-9681858985507948"; | ||
| + | google_ad_width = 468; | ||
| + | google_ad_height = 60; | ||
| + | google_ad_format = "468x60_as"; | ||
| + | google_ad_type = "text"; | ||
| + | google_ad_channel = ""; | ||
| + | google_color_border = "cccccc"; | ||
| + | google_color_bg = "FFFFFF"; | ||
| + | google_color_link = "1d2d8c"; | ||
| + | google_color_text = "000000"; | ||
| + | google_color_url = "1d2d8c"; | ||
| + | //--> | ||
| + | </script> | ||
| + | <script type="text/javascript" | ||
| + | src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> | ||
| + | </script> | ||
| + | </html> | ||
| + | \\ | ||
| - | //ScrolledForm initialisieren: | + | Einfaches Beispiel für eine Tabelle.\\ |
| - | scrolledForm = getFormToolkit().createScrolledForm(composite); | + | (Basis ist wieder die [[eclipse-rcp::source-example-application|Source-Beispiel-Applikation]]; die dort vorhandene Klasse MyEditorPage muss nur durch die Klasse MyEditorPageTable ersetzt werden.)\\ |
| - | scrolledForm.setExpandHorizontal(false); | + | <code> |
| - | scrolledForm.getBody().setLayout(new GridLayout()); | + | package com.sowas.javawiki.rcpbaseapplication; |
| - | //Tabelle mit ScrolledForm als parent erzeugen: | + | import java.util.ArrayList; |
| - | table = getFormToolkit().createTable(scrolledForm.getBody(), SWT.NONE); | + | |
| - | setControl(composite); | + | import org.eclipse.jface.viewers.ILabelProviderListener; |
| - | } | + | import org.eclipse.jface.viewers.IStructuredContentProvider; |
| + | import org.eclipse.jface.viewers.ITableLabelProvider; | ||
| + | import org.eclipse.jface.viewers.TableViewer; | ||
| + | import org.eclipse.jface.viewers.Viewer; | ||
| + | import org.eclipse.swt.SWT; | ||
| + | import org.eclipse.swt.graphics.Image; | ||
| + | import org.eclipse.swt.layout.GridData; | ||
| + | import org.eclipse.swt.layout.GridLayout; | ||
| + | import org.eclipse.swt.widgets.Composite; | ||
| + | import org.eclipse.swt.widgets.Label; | ||
| + | import org.eclipse.swt.widgets.Table; | ||
| + | import org.eclipse.swt.widgets.TableColumn; | ||
| + | import org.eclipse.ui.forms.IManagedForm; | ||
| + | import org.eclipse.ui.forms.editor.FormEditor; | ||
| + | import org.eclipse.ui.forms.editor.FormPage; | ||
| + | import org.eclipse.ui.forms.editor.IFormPage; | ||
| + | import org.eclipse.ui.forms.widgets.FormToolkit; | ||
| + | |||
| + | public class MyEditorPageTable extends FormPage implements IFormPage { | ||
| + | private Table table; | ||
| + | private FormToolkit formToolkit; | ||
| + | private TableViewer tableViewer; | ||
| + | private Addresses addresses; | ||
| + | private String[] columnNames = {"Nachname", "Vorname"}; | ||
| + | |||
| + | public MyEditorPageTable(FormEditor editor, String pageId, String pageTitle) { | ||
| + | super(editor, pageId, pageTitle); | ||
| + | |||
| + | addresses = new Addresses(); | ||
| + | } | ||
| + | |||
| + | @Override | ||
| + | protected void createFormContent(IManagedForm managedForm) { | ||
| + | super.createFormContent(managedForm); | ||
| + | Composite client = managedForm.getForm().getBody(); | ||
| + | client.setLayout(new GridLayout(2, false)); | ||
| + | formToolkit = managedForm.getToolkit(); | ||
| + | |||
| + | Label label = formToolkit.createLabel(client, "Tabelle:"); | ||
| + | GridData gdLabel = new GridData(GridData.FILL_VERTICAL); | ||
| + | gdLabel.verticalAlignment = SWT.TOP; | ||
| + | label.setLayoutData(gdLabel); | ||
| + | |||
| + | table = formToolkit.createTable(client, SWT.BORDER); | ||
| + | GridData gridData = new GridData(GridData.FILL_BOTH); | ||
| + | gridData.heightHint = 100; | ||
| + | table.setLayoutData(gridData); | ||
| + | table.setHeaderVisible(true); | ||
| + | table.setLinesVisible(true); | ||
| + | int col = 0; | ||
| + | TableColumn tcLastName = new TableColumn(table, SWT.LEFT, col); | ||
| + | tcLastName.setText(columnNames[col]); | ||
| + | col++; | ||
| + | TableColumn tcFirstName = new TableColumn(table, SWT.LEFT, col); | ||
| + | tcFirstName.setText(columnNames[col]); | ||
| + | for (int i =0; i < table.getColumnCount(); i++) | ||
| + | table.getColumn(i).pack(); | ||
| + | tableViewer = new TableViewer(table); | ||
| + | tableViewer.setColumnProperties(columnNames); | ||
| + | tableViewer.setContentProvider(new IStructuredContentProvider() { | ||
| + | |||
| + | @Override | ||
| + | public Object[] getElements(Object inputElement) { | ||
| + | System.out.println("getElements()"); | ||
| + | return ((Addresses)inputElement).getAddesses(); | ||
| + | } | ||
| + | |||
| + | @Override | ||
| + | public void dispose() { | ||
| + | } | ||
| + | |||
| + | @Override | ||
| + | public void inputChanged(Viewer viewer, Object oldInput, | ||
| + | Object newInput) { | ||
| + | } | ||
| + | |||
| + | }); | ||
| + | tableViewer.setLabelProvider(new ITableLabelProvider() { | ||
| + | |||
| + | @Override | ||
| + | public Image getColumnImage(Object element, int columnIndex) { | ||
| + | return null; | ||
| + | } | ||
| + | |||
| + | @Override | ||
| + | public String getColumnText(Object element, int columnIndex) { | ||
| + | String text = ""; | ||
| + | Address addr = (Address) element; | ||
| + | switch (columnIndex) { | ||
| + | case 0: text = addr.getLastName(); break; | ||
| + | case 1: text = addr.getFirstName(); break; | ||
| + | } | ||
| + | System.out.println(text); | ||
| + | return text; | ||
| + | } | ||
| + | |||
| + | @Override | ||
| + | public void addListener(ILabelProviderListener listener) { | ||
| + | } | ||
| + | |||
| + | @Override | ||
| + | public void dispose() { | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | @Override | ||
| + | public boolean isLabelProperty(Object element, String property) { | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | @Override | ||
| + | public void removeListener(ILabelProviderListener listener) { | ||
| + | } | ||
| + | }); | ||
| + | tableViewer.setInput(addresses); | ||
| + | tableViewer.refresh(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | class Addresses { | ||
| + | ArrayList<Address> addresses = new ArrayList<Address>(); | ||
| + | |||
| + | public Addresses() { | ||
| + | addresses.add(new Address("Apfel", "Anton")); | ||
| + | addresses.add(new Address("Hüpfer", "Hugo")); | ||
| + | addresses.add(new Address("Frosch", "Frodo")); | ||
| + | addresses.add(new Address("Kaninchen", "Sabinchen")); | ||
| + | addresses.add(new Address("Topfdeckel", "Teo")); | ||
| + | addresses.add(new Address("Traurig", "Trude")); | ||
| + | addresses.add(new Address("Warmer", "Werner")); | ||
| + | } | ||
| + | |||
| + | public Object[] getAddesses() { | ||
| + | return addresses.toArray(new Address[0]); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | class Address { | ||
| + | private String strLastName; | ||
| + | private String strFirstName; | ||
| + | |||
| + | public Address(String strLastName, String strFirstName) { | ||
| + | this.strLastName = strLastName; | ||
| + | this.strFirstName = strFirstName; | ||
| + | } | ||
| + | public void setLastName(String strLastName) { | ||
| + | this.strLastName = strLastName; | ||
| + | } | ||
| + | public String getLastName() { | ||
| + | return strLastName; | ||
| + | } | ||
| + | public void setFirstName(String strFirstName) { | ||
| + | this.strFirstName = strFirstName; | ||
| + | } | ||
| + | public String getFirstName() { | ||
| + | return strFirstName; | ||
| + | } | ||
| + | } | ||
| </code> | </code> | ||
| + | \\ | ||
| + | Flags für die Tabellenerstellung:\\ | ||
| + | **SWT.SINGLE** - Es kann immer eine Tabellenzeile zur Zeit selektiert werden\\ | ||
| + | **SWT.MULTI** - Es können mehrere Tabellenzeilen gleichzeitig selektiert sein\\ | ||
| + | **SWT.CHECK** - Plaziert eine Check-Box am Anfang jeder Zeile\\ | ||
| + | **SWT.FULL_SELECTION** - Die ganze selektierte Zeile wird eingefärbt\\ | ||
| + | **SWT.HIDE_SELECTION** - Selektierte Zeilen/Zellen werden nicht eingefärbt\\ | ||