- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 SWT TableViewer。表有 3 列,第 1 2 列包含可编辑文本字段数据,另一列是按钮。我将输入列表设置到表查看器中。即使数据存在于行内,数据也是不可见的。当我单击可编辑单元格时,数据可见。我添加了 2 张图片。有人知道为什么数据不可见吗?
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
class ProjectEditingSupport2 extends EditingSupport {
private int m_column;
private CellEditor m_editor;
public ProjectEditingSupport2(ColumnViewer viewer, int column) {
super(viewer);
// Create the correct editor based on the column index
switch (column) {
case 0:
m_editor = new TextCellEditor(((TableViewer) viewer).getTable());
break;
case 1:
m_editor = new TextCellEditor(((TableViewer) viewer).getTable());
break;
default:
}
m_column = column;
}
@Override
protected boolean canEdit(Object arg0) {
// TODO Auto-generated method stub
return true;
}
@Override
protected CellEditor getCellEditor(Object element) {
return m_editor;
}
@Override
protected Object getValue(Object element) {
Object value = null;
ProjectBean2 projectBean = (ProjectBean2) element;
switch (m_column) {
case 0:
value = projectBean.getProjectName();
break;
case 1:
value = projectBean.getProjectLocation();
break;
default:
}
return value;
}
@Override
protected void setValue(Object element, Object value) {
ProjectBean2 projectBean = (ProjectBean2) element;
switch (m_column) {
case 0:
if (valueChanged(projectBean.getProjectName(), (String) value)) {
projectBean.setProjectName((String) value);
}
break;
case 1:
if (valueChanged(projectBean.getProjectLocation(), (String) value)) {
projectBean.setProjectLocation((String) value);
}
break;
default:
}
}
private boolean valueChanged(String previousValue, String currentValue) {
boolean changed = false;
if ((previousValue == null) && (currentValue != null)) {
changed = true;
} else if ((previousValue != null) && (currentValue != null) && (!previousValue.equals(currentValue))) {
changed = true;
}
return changed;
}
}
class ProjectContentProvider2 implements org.eclipse.jface.viewers.IStructuredContentProvider {
private org.eclipse.jface.viewers.TableViewer m_tableViewer;
@Override
public Object[] getElements(Object inputElement) {
return (Object[]) inputElement;
}
public void dispose() {
}
public void inputChanged(org.eclipse.jface.viewers.Viewer viewer, Object oldInput, Object newInput) {
m_tableViewer = (org.eclipse.jface.viewers.TableViewer) viewer;
}
}
class ProjectColumnLabelProvider2 extends ColumnLabelProvider {
private int m_column;
public ProjectColumnLabelProvider2(int column) {
m_column = column;
}
public String getText(Object element) {
String text = null;
if (element instanceof ProjectBean2) {
ProjectBean2 projectBean = (ProjectBean2) element;
switch (m_column) {
case 0:
text = projectBean.getProjectName();
break;
case 1:
text = projectBean.getProjectLocation();
break;
default:
// Nothing will happen
}
}
return text;
}
public void update(ViewerCell cell) {
if (m_column == 2) {
TableItem item = (TableItem) cell.getItem();
Button btn = new Button((Composite) cell.getControl(), SWT.NONE);
btn.setText("A");
btn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println(m_column + " Selected for open a folder!!!");
}
});
TableEditor editor = new TableEditor(item.getParent());
// editor.grabHorizontal = true;
editor.horizontalAlignment = SWT.CENTER;
editor.minimumWidth = btn.getSize().x + 20;
editor.setEditor(btn, item, cell.getColumnIndex());
editor.layout();
}
}
}
class ProjectBean2 {
private String projectName;
private String projectLocation;
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getProjectLocation() {
return projectLocation;
}
public void setProjectLocation(String projectLocation) {
this.projectLocation = projectLocation;
}
}
public class Test {
private static void createTableViewer(Shell composite) {
Table m_table = new Table(composite, SWT.FULL_SELECTION | org.eclipse.swt.SWT.MULTI | org.eclipse.swt.SWT.BORDER
| org.eclipse.swt.SWT.V_SCROLL | org.eclipse.swt.SWT.H_SCROLL);
m_table.setLinesVisible(true);
m_table.setHeaderVisible(true);
GridData tableData = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1);
tableData.heightHint = 300;
m_table.setLayoutData(tableData);
org.eclipse.jface.viewers.TableViewerColumn columnViewer = null;
String[] columnNames = { "Project Name", "Project Location", "" }; //$NON-NLS-1$
TableViewer m_tableViewer = new TableViewer(m_table);
for (int i = 0; i < columnNames.length; i++) {
columnViewer = new org.eclipse.jface.viewers.TableViewerColumn(m_tableViewer, org.eclipse.swt.SWT.LEFT);
columnViewer.getColumn().setText(columnNames[i]);
if (columnNames[i].equals("")) { //$NON-NLS-1$
columnViewer.getColumn().setWidth(25);
} else if (columnNames[i].equals("Project Name")) { //$NON-NLS-1$
columnViewer.getColumn().setWidth(150);
} else if (columnNames[i].equals("Project Location")) { //$NON-NLS-1$
columnViewer.getColumn().setWidth(150);
}
columnViewer.getColumn().setResizable(true);
columnViewer.getColumn().setMoveable(true);
// this line will call EditingSupport.setValue()
columnViewer.setEditingSupport(new ProjectEditingSupport2(m_tableViewer, i));
columnViewer.setLabelProvider(new ProjectColumnLabelProvider2(i));
}
m_tableViewer.setContentProvider(new ProjectContentProvider2());
m_tableViewer.setColumnProperties(columnNames);
List<ProjectBean2> beans = new ArrayList<>();
for (int i = 0; i < 10; i++) {
ProjectBean2 bean = new ProjectBean2();
bean.setProjectLocation("Location" + i);
bean.setProjectName("Name" + i);
beans.add(bean);
}
m_tableViewer.setInput(beans.toArray());
}
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display, SWT.SHELL_TRIM);
shell.setText("Shawn Spiars' Table Edit Example");
shell.setLayout(new FillLayout());
createTableViewer(shell);
shell.setSize(400, 400);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
最佳答案
您正在重写ColumnLabelProvider
的update
方法,但您没有调用super.update
,这会阻止数据的显示。
使用
@Override
public void update(final ViewerCell cell) {
super.update(cell);
... your code
}
关于java - SWT TableViewer 单元格不显示图像,除非单击可编辑单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54305568/
我已经尝试在我的 CSS 中添加一个元素来删除每三个 div 的 margin-right。不过,似乎只是出于某种原因影响了第 3 次和第 7 次。需要它在第 3、6、9 等日工作... CSS .s
如何使 div/input 闪烁或“脉冲”?例如,假设表单字段输入了无效值? 最佳答案 使用 CSS3 类似 on this page ,您可以将脉冲效果添加到名为 error 的类中: @-webk
我目前正在尝试构建一个简单的 wireframe来自 lattice 的情节包,但由沿 y 轴的数百个点组成。这导致绘图被线框网格淹没,您看到的只是一个黑色块。我知道我可以用 col=FALSE 完全
在知道 parent>div CSS 选择器在 IE 中无法识别后,我重新编码我的 CSS 样式,例如: div#bodyMain div#paneLeft>div{/*styles here*/}
我有两个 div,一个在另一个里面。当我将鼠标悬停 到最外面的那个时,我想改变它的颜色,没问题。但是,当我将鼠标悬停 到内部时,我只想更改它的颜色。这可能吗?换句话说,当 将鼠标悬停到内部 div 上
我需要展示这样的东西 有人可以帮忙吗?我可以实现以下输出 我正在使用以下代码:: GridView.builder( scrollDirection: Axis.vertical,
当 Bottom Sheet 像 Android 键盘一样打开时,是否有任何方法可以手动上推布局( ScrollView 或回收器 View 或整个 Activity )?或者你可以说我想以 Bott
我有以下代码,用于使用纯 HTML 和 CSS 显示翻转。当您将鼠标悬停在文本上时,它会更改左右图像。 在我测试的所有浏览器中都运行良好,Safari 4 除外。据我收集的信息,Safari 4 支持
我构建了某种 CMS,但在使用 TinyMCE 和 Bootstrap 时遇到了一些问题。 我有一个页面,其中概述了一个 div,如果用户单击该 div,他们可以从模态中选择图像。该图像被插入到一个
出于某种原因,当我设置一个过渡时,当我的鼠标悬停在一个元素上时,背景会改变颜色,它只适用于一个元素,但它们都共享同一个类?任何帮助我的 CSS .outer_ad { position:rel
好吧,这真的很愚蠢。我不知道 Android Studio 中的调试监视框架发生了什么。我有 1.5.1 的工作室。 是否有一些来自 intellij 的 secret 知识来展示它。 最佳答案 与以
我有这个标记: some code > 我正在尝试获取此布局: 注意:上一个和下一个按钮靠近#player 我正在尝试这样: .nextBtn{
网站:http://avuedesigns.com/index 首页有 6 个菜单项。我希望每件元素在您经过时都有自己的颜色。 这是当您将鼠标悬停在 div 上时将所有内容更改为白色的行 li#hom
我需要在 index.php 文件中显示它,但没有任何效果。我所有的文章都没有正确定位。我将其用作代码: 最佳答案 您可以首先检查您
我是一名优秀的程序员,十分优秀!