当宽度超过指定限制时,无法在表格单元格内换行文本。
代码:
public static void main(String[] args) {
List<TableData> list = Collections.synchronizedList(new ArrayList<TableData>());
list.add(new TableData("Jack Hodgins", 24) );
list.add(new TableData("This is just aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+ "\n" + "hugeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
+ "\n" + "messsageeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
+ "\n" + "to checkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"
+ "\n" + "wrap functionalityyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", 50));
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Table Viewer Column");
shell.setSize(800, 1500);
TableViewer viewer = new TableViewer(shell, SWT.FILL | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
table.setSize(1000, 1500);
table.setLayout(new TableLayout());
/** Column for Name */
TableViewerColumn columnName = new TableViewerColumn(viewer, SWT.MULTI | SWT.WRAP);
columnName.getColumn().setWidth(250);
columnName.getColumn().setText("Name");
columnName.setLabelProvider(new ColumnLabelProvider() {
@Override
public void update(ViewerCell cell)
{
Object element = cell.getElement();
if (element instanceof TableData)
{
TableData obj = (TableData) element;
cell.setText(obj.getName());
}
}
});
/** Column for Age */
TableViewerColumn columnAge = new TableViewerColumn(viewer, SWT.NONE);
columnAge.getColumn().setWidth(100);
columnAge.getColumn().setText("Age");
columnAge.setLabelProvider(new ColumnLabelProvider() {
@Override
public void update(ViewerCell cell)
{
Object element = cell.getElement();
if (element instanceof TableData)
{
TableData obj = (TableData) element;
cell.setText(String.valueOf(obj.getAge()) );
}
}
});
viewer.setContentProvider(ArrayContentProvider.getInstance());
viewer.setInput(list);
viewer.refresh();
table.pack();
shell.pack();
shell.open();
shell.setVisible(true);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
public static class TableData
{
String name;
int age;
public TableData(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
我查看了stackoverflow的其他链接-
jface tableviewer http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/org/c/platform/eclipse.platform.ui.git/tree/expples/org.eclipse/swt/snippets/snippets231.java http://git.eclipse.org/c/platform/eclipse.platform.jface.snippets/jeclipse
仍然无法找到解决这个问题的办法。好心帮忙。
此所有者绘制标签提供程序设置为columnname
的标签提供程序,显示在换行处拆分的多行。但所有行都有最深行的大小。
private static class NameLabelProvider extends OwnerDrawLabelProvider
{
private static final int TEXT_MARGIN = 3;
@Override
protected void erase(final Event event, final Object element)
{
event.detail &= ~SWT.FOREGROUND;
}
@Override
protected void measure(final Event event, final Object element)
{
final TableData data = (TableData)element;
final String text = data.getName();
final Point size = event.gc.textExtent(text);
event.width = size.x + 2 * TEXT_MARGIN;
event.height = Math.max(event.height, size.y + TEXT_MARGIN);
}
@Override
protected void paint(final Event event, final Object element)
{
final TableData data = (TableData)element;
final String text = data.getName();
event.gc.drawText(text, event.x + TEXT_MARGIN, event.y, true);
}
}
问题内容: 我想在命令行Java程序中添加进度指示器。 例如,如果我使用wget,它将显示: 是否有可能在不添加新行的情况下更新进度指示器? 谢谢。 问题答案: 首先,在编写时,请勿使用writeln()。使用write()。其次,您可以使用“ \ r”来回车,而无需使用\ n这是换行符。回车应使您回到行首。
问题内容: 我有动物课和狗课,如下所示: 和主类: 显示错误: 问题答案: 动物不可能是狗,也可能是猫,或者像您这样的动物 对于垂头丧气,您必须执行此操作 顺便说一句,垂头丧气是危险的,您可以使用它,如果出于培训目的也可以。 如果要避免运行时异常,可以执行此检查,但是会慢一些。
我正在写一个chrome扩展,它将改变屏幕上某些单词的颜色。我很难找到符合我需要的文本,然后准确地将它包装成一个跨度。html中的同一个单词通常会在页面的其他位置被替换,从而使链接和样式变得毫无用处。 我的示例代码如下:
我不知道为什么,但是当我试图从JSON获取数据时,我得到了这个错误: JAVA无法在Jsonarray中转换lang.String 这是我的代码, 主要活动: JSON:
问题内容: 所以这是我所拥有的: 现在,即使我使用alert(),我的很长的工具提示文本也没有换行符。它向我显示文本实际上有两行。(不过,它包含一个“ \”,请问如何将其删除?) 我无法在任何地方使用CDATA。 问题答案: SVG 1.1不支持此功能。SVG 1.2确实具有自动换行的元素,但并非在所有浏览器中都实现。SVG 2 并未计划实现,但确实具有自动包装的文本。 但是,鉴于您已经知道换行应
问题内容: 我的Linux机器上有一个2GB的文本文件,我正尝试将其导入数据库。 我遇到的问题是,正在处理此rdf文件的脚本在一行上令人窒息: 我想替换用。我无法在所有行上进行搜索/替换,但是我有行号,因此我希望有一些简单的方法可以将一行替换为新文本。 有什么想法/建议吗? 问题答案: