我正在尝试使用列创建Java SWT表。我想要的是最左边的列包含一个复选框。这是我到目前为止的代码。
panelSelector = new Composite(composite, SWT.H_SCROLL);
//panelSelector.setBackgroundImage(SWTResourceManager.getImage(UniverseAnalyzerItem.class, "/img/LandscapeTools/UniverseAnalyzer.png"));
panelSelector.setLayout(null);
ScrolledComposite scrolledComposite = new ScrolledComposite(panelSelector, SWT.BORDER | SWT.V_SCROLL|SWT.H_SCROLL);
scrolledComposite.setBounds(10, 30, 800, 500);
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
//tableViewer = new TableViewer(scrolledComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.CHECK);
//table = tableViewer.getTable();
table = new Table(scrolledComposite,SWT.BORDER | SWT.CHECK);
table.setTouchEnabled(true);
table.setLinesVisible(true);
table.setHeaderVisible(true);
tableViewer = new TableViewer(table);
TableColumn uCheck = new TableColumn(table,SWT.CHECK);
uCheck.setWidth(50);
TableColumn uName = new TableColumn(table,SWT.CENTER);
uName.setText("Name");
uName.setWidth(150);
TableColumn uID = new TableColumn(table,SWT.CENTER);
uID.setText("ID");
uID.setWidth(50);
TableColumn uType = new TableColumn(table,SWT.CENTER);
uType.setText("Type");
uType.setWidth(50);
TableColumn uPath = new TableColumn(table,SWT.CENTER);
uPath.setText("Path");
uPath.setWidth(200);
scrolledComposite.setContent(table);
scrolledComposite.setMinSize(table.computeSize(SWT.DEFAULT,SWT.DEFAULT));
问题是,当我运行应用程序时,复选框不可见。谁知道我做错了什么?
答案 0 :(得分:0)
您的代码未设置表格的任何输入。在设置查看器内容提供程序,标签提供程序并调用setInput
之前,您不会在表中看到任何内容。
正如测试添加
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
tableViewer.setInput(new String [] {"line1", "line2"});
代码末尾的对我有用。
注意:SWT.CHECK
不是TableColumn
的有效样式。这不是您访问表格中复选框的方式。您应该使用CheckboxTableViewer
代替TableViewer
,这为您提供了访问复选框的其他方法。