Вставка кнопки в таблицу JFace
Как я могу вставить элемент управления SWT Button в JFace TableViewer?
2 ответа
Ты не можешь В целом, вы не можете вставить какие-либо виджеты в таблицы и деревья в SWT, потому что не все платформы поддерживают это. Что вы можете сделать вместо этого
Сделайте два скриншота кнопки в нормальном и кликнутом состояниях;
Положите обычный скриншот в таблицу как изображение;
Обрабатывать нажатия на TableItem.
Вот пример для флажков: http://tom-eclipse-dev.blogspot.com/2007/01/tableviewers-and-nativelooking.html
Полученный ответ - хороший способ реализовать свои собственные кнопки с пользовательскими рисунками, внутри или снаружи таблицы. Однако вы можете поместить элементы управления SWT в таблицы JFace.
http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/PlacearbitrarycontrolsinaSWTtable.htm
Решение для построения таблицы со столбцами, содержащими выпадающие списки, текстовые поля и кнопки, предоставляемые ссылкой:
Table table = new Table(shell, SWT.BORDER | SWT.MULTI);
table.setLinesVisible(true);
for (int i = 0; i < 3; i++) {
TableColumn column = new TableColumn(table, SWT.NONE);
column.setWidth(100);
}
for (int i = 0; i < 12; i++) {
new TableItem(table, SWT.NONE);
}
TableItem[] items = table.getItems();
for (int i = 0; i < items.length; i++) {
TableEditor editor = new TableEditor(table);
CCombo combo = new CCombo(table, SWT.NONE);
editor.grabHorizontal = true;
editor.setEditor(combo, items[i], 0);
editor = new TableEditor(table);
Text text = new Text(table, SWT.NONE);
editor.grabHorizontal = true;
editor.setEditor(text, items[i], 1);
editor = new TableEditor(table);
Button button = new Button(table, SWT.CHECK);
button.pack();
editor.minimumWidth = button.getSize().x;
editor.horizontalAlignment = SWT.LEFT;
editor.setEditor(button, items[i], 2);
}