Java by API/org.eclipse.swt.custom/TableEditor
new TableEditor(Table table)
<source lang="java">
import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.ColorDialog; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; public class MainClass {
public static void main(String[] a) { final Display d = new Display(); final Shell shell = new Shell(d); shell.setSize(250, 200); shell.setLayout(new FillLayout()); // Number of rows and columns final int NUM = 5; // Create the table final Table table = new Table(shell, SWT.SINGLE | SWT.FULL_SELECTION | SWT.HIDE_SELECTION); table.setHeaderVisible(true); table.setLinesVisible(true); for (int i = 0; i < NUM; i++) { TableColumn column = new TableColumn(table, SWT.CENTER); column.setText("Column " + (i + 1)); column.pack(); } TableEditor[] colorEditors = new TableEditor[NUM]; Button[] colorButtons = new Button[NUM]; for (int i = 0; i < NUM; i++) { // Create the row final TableItem item = new TableItem(table, SWT.NONE); // Create the editor and button colorEditors[i] = new TableEditor(table); colorButtons[i] = new Button(table, SWT.PUSH); // Set attributes of the button colorButtons[i].setText("Color..."); colorButtons[i].ruputeSize(SWT.DEFAULT, table.getItemHeight()); // Set attributes of the editor colorEditors[i].grabHorizontal = true; colorEditors[i].minimumHeight = colorButtons[i].getSize().y; colorEditors[i].minimumWidth = colorButtons[i].getSize().x; colorEditors[i].setEditor(colorButtons[i], item, 0); colorButtons[i].addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { System.out.println("pressed"); } }); } shell.open(); while (!shell.isDisposed()) { if (!d.readAndDispatch()) d.sleep(); } d.dispose(); }
}
</source>
TableEditor: setEditor(Control control, TableItem item, int index)
<source lang="java">
import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.ColorDialog; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; public class MainClass {
public static void main(String[] a) { final Display d = new Display(); final Shell shell = new Shell(d); shell.setSize(250, 200); shell.setLayout(new FillLayout()); // Number of rows and columns final int NUM = 5; // Create the table final Table table = new Table(shell, SWT.SINGLE | SWT.FULL_SELECTION | SWT.HIDE_SELECTION); table.setHeaderVisible(true); table.setLinesVisible(true); for (int i = 0; i < NUM; i++) { TableColumn column = new TableColumn(table, SWT.CENTER); column.setText("Column " + (i + 1)); column.pack(); } TableEditor[] colorEditors = new TableEditor[NUM]; Button[] colorButtons = new Button[NUM]; for (int i = 0; i < NUM; i++) { // Create the row final TableItem item = new TableItem(table, SWT.NONE); // Create the editor and button colorEditors[i] = new TableEditor(table); colorButtons[i] = new Button(table, SWT.PUSH); // Set attributes of the button colorButtons[i].setText("Color..."); colorButtons[i].ruputeSize(SWT.DEFAULT, table.getItemHeight()); // Set attributes of the editor colorEditors[i].grabHorizontal = true; colorEditors[i].minimumHeight = colorButtons[i].getSize().y; colorEditors[i].minimumWidth = colorButtons[i].getSize().x; colorEditors[i].setEditor(colorButtons[i], item, 0); colorButtons[i].addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { System.out.println("pressed"); } }); } shell.open(); while (!shell.isDisposed()) { if (!d.readAndDispatch()) d.sleep(); } d.dispose(); }
}
</source>