0
當需要在tableitem中顯示消息時,需要更改表格項目的文本。我們如何使用jface來完成此操作。該表格由2個coloumns組成。請幫助解決這個問題,因爲我是jface的新手。如何使用jface在swt中更改表格行的文本
當需要在tableitem中顯示消息時,需要更改表格項目的文本。我們如何使用jface來完成此操作。該表格由2個coloumns組成。請幫助解決這個問題,因爲我是jface的新手。如何使用jface在swt中更改表格行的文本
好的,這裏是一個非常基本的例子。你必須處理的顏色String
代表性和實際Color
之間的映射S自己:
private static Map<String, Integer> COLOR_MAPPING = new HashMap<>();
static
{
COLOR_MAPPING.put("red", SWT.COLOR_RED);
COLOR_MAPPING.put("blue", SWT.COLOR_BLUE);
}
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new GridLayout(1, false));
TableViewer viewer = new TableViewer(shell, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
createColumns(viewer);
final Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
List<MyObject> data = new ArrayList<>();
data.add(new MyObject("Something", "red"));
data.add(new MyObject("Something else", "blue"));
data.add(new MyObject("Something else entirely", "bleen"));
viewer.setContentProvider(ArrayContentProvider.getInstance());
viewer.setInput(data);
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
private static void createColumns(TableViewer viewer)
{
TableViewerColumn first = new TableViewerColumn(viewer, SWT.NONE);
first.getColumn().setWidth(200);
first.getColumn().setText("First");
first.setLabelProvider(new ColumnLabelProvider()
{
@Override
public void update(ViewerCell cell)
{
Object element = cell.getElement();
if(element instanceof MyObject)
{
MyObject obj = (MyObject) element;
cell.setText(obj.getFirst());
}
}
});
TableViewerColumn second = new TableViewerColumn(viewer, SWT.NONE);
second.getColumn().setWidth(200);
second.getColumn().setText("Second");
second.setLabelProvider(new ColumnLabelProvider()
{
@Override
public void update(ViewerCell cell)
{
Object element = cell.getElement();
if(element instanceof MyObject)
{
MyObject obj = (MyObject) element;
cell.setText(obj.getSecond());
Integer colorCode = COLOR_MAPPING.get(obj.getSecond());
if(colorCode != null)
cell.setForeground(Display.getDefault().getSystemColor(colorCode));
}
}
});
}
private static class MyObject
{
private String first;
private String second;
public MyObject(String first, String second)
{
this.first = first;
this.second = second;
}
public String getFirst()
{
return first;
}
public void setFirst(String first)
{
this.first = first;
}
public String getSecond()
{
return second;
}
public void setSecond(String second)
{
this.second = second;
}
}
是這樣的:
你的意思是用「文字」和「什麼消息「?你正在使用'Table'還是'TableViewer'? – Baz 2014-09-01 06:15:48
我正在使用一個table.Here文本和消息是相同的,這意味着任何文本。如果您使用tableviewer,因爲它使用jface更好,那麼更好 – user3824589 2014-09-01 06:21:21
所以你想使用表或tableviewer?並請詳細解釋你想達到的目標。我仍然不明白你在問什麼。 – Baz 2014-09-01 06:25:47