SWT中是否有一种方法可以简单地获得等宽字体,适用于各种操作系统?
例如.这适用于Linux,但不适用于Windows:
Font mono = new Font(parent.getDisplay(), "Mono", 10, SWT.NONE);
或者我需要一个尝试加载不同字体(Consolas,Terminal,Monaco,Mono)的方法,直到一个不为空?或者,我可以在启动时在属性文件中指定它.
我尝试从Display获取系统字体,但这不是等宽的.
连接到Oracle时,JDBC驱动程序将自己标识为Oracle的"JDBC瘦客户端"(在v $ session中称为"程序").v $ session中还有一个'ClientInfo'列可能用于此目的,但它始终为空.
我们需要识别连接到Oracle的不同应用程序(它们在同一主机上运行,因此v $ session中的'machine'列完全相同),因此可以更改Oracle JDBC瘦客户机驱动程序识别的方式本身(所以我们可以将应用程序名称放在其中)?
或者有推荐的方法吗?一个限制是我们在Struts中为一些应用程序执行此操作,这些应用程序在内部处理连接设置.
我遍历树结构以收集叶节点的路径.您希望以哪种方式收集操作结果:
a)合并孩子的结果并返回
private Collection<String> extractPaths(final Element element, final IPath parentPath) {
final IPath path = parentPath.append(element.getLabel());
final Collection<Element> children = getElementChildren(element);
if (children.isEmpty())
return Collections.singletonList(path.toString());
final Set<String> result = new TreeSet<String>();
for (final Element child : children)
result.addAll(extractPaths(child, path));
return result;
}
Run Code Online (Sandbox Code Playgroud)
b)提供结果集合作为参数,并在每个递归步骤中添加新元素
private void extractPaths(final Element element, final IPath parentPath, final Set<String> result) {
final IPath path = parentPath.append(element.getLabel());
final Collection<Element> children = getElementChildren(element);
if (children.isEmpty())
result.add(path.toString());
for (final Element child : children)
extractPaths(child, path, result);
}
Run Code Online (Sandbox Code Playgroud)