【发布时间】:2018-03-07 13:58:23
【问题描述】:
我必须使用 Eclipse SWT 的一些小部件来显示文件的内容。该文件具有结构,它有未知的行数和未知的列数。文件格式正确(即第一行中的第二列正好从第二行、第三行等的第二列开始。)它具有类似表格的结构,但没有实际的表格:
itt.van.juci tt.mm.yyyy // hh:mm:ss
juci 14.09.2017 // 08;08:08
如果读取文件并将其再次打印到另一个文件中,我会得到相同的结构而不会出现任何失真。
但是,如果我将其读入 String 并使用此 String 设置 SWT Label 或 SWT.Text,我会得到扭曲的外观。第二个(以及任何后续列)中的行不在同一位置开始。第一列内容的长度影响后面几列的起点:
itt.van.juci tt.mm.yyyy // hh:mm:ss
juci 14.09.2017 // 08;08:08
有没有办法去掉这些多余的空间,保持原来的结构?
这是我使用的设置标签部分:
Label historyLabel = new Label(compositeFiles, SWT.WRAP);
GridData gd_lblNewLabel = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
gd_lblNewLabel.widthHint = 566;
gd_lblNewLabel.heightHint = 237;
historyLabel.setLayoutData(gd_lblNewLabel);
historyLabel.setText(Dummy.dummyHistory());
}
这里正在读取文件:
private static String java_8() {
StringBuilder sb = new StringBuilder();
try (Stream<String> stream = Files.lines(Paths.get(fileName_2))) {
stream.forEach(line->{
sb.append(line).append("\n");
});
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
高度赞赏任何解决方案。如果其他小部件更适合,我不需要使用org.eclipse.swt.widgets.Text。但是使用 Table 会很困难,因为我不知道需要多少列。
【问题讨论】:
-
列不对齐,因为您使用的是可变宽度字体,将控件设置为使用固定宽度字体可以解决此问题。但是表格会好很多 - 你不能在阅读文件时计算出列数吗?
-
我不知道,也许吧。但这也会增加额外的困难。如何设置字体?
-
我的意思是如何将控件设置为使用固定宽度?
-
您在指定固定宽度字体的控件上调用
setFont方法。JFaceResources.getFont(JFaceResources.TEXT_FONT)返回的字体通常是固定宽度的。 -
historyLabel.setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT));可悲的是,这没有任何改变
标签: widget swt eclipse-rcp jface java-io