如何在javafx或swing Textarea中显示所有系统属性;
以像这样的格式
“KEY1”=值1
“KEY2”=值2
我试过*textarea.setText(System.getProperties().toString()),*
但是就这样列出来了;
{javafx.version=8.0.72, java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=C:\Program Files\Java\jdk1.8.0_77\jre\bin, java.vm.version=25.77-b03, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.o......
答案 0 :(得分:1)
使用Java 8功能的版本看起来像
TextArea textArea = new TextArea();
// or, in Swing, JTextArea textArea = new JTextArea();
textArea.setText( System.getProperties().entrySet().stream()
.map(e -> String.format("\"%s\" = %s", e.getKey(), e.getValue()))
.collect(Collectors.joining("\n")));
如果您不需要键周围的引号,则可以使用更简单的
替换地图步骤 .map(Object::toString)
答案 1 :(得分:0)
如果您希望每个键/值在一个单独的行上,您可以执行类似的操作:
String out = System.getProperties().toString.replaceAll(", ", "\n");
textarea.setText(out);
如果textArea使用" \ n"我不是肯定的。用于行分隔,但它将有一个分隔符。
如果您希望密钥在引号中,请在属性上使用Enumeration。
Properties props = System.getProperties();
Enumeration<?> e = props.propertyNames();
StringBuilder sb = new StringBuilder();
while (e.hasMoreElements()) {
String key = (String)e.nextElement();
String val = props.getProperty(key);
if (sb.length() > 0) {
sb.append(" ");
}
sb.append("\""); sb.append(key); sb.append("\"="); sb.append(val);
}
textarea.setText(sb.toString());
答案 2 :(得分:0)
制作你的代码(我尽可能地缩短它):
String text = "";
for(String sp : System.getProperties().toString().substring(1, System.getProperties().toString().length() - 2).split(","))text += "\n" + "\"" + sp.split("=")[0].trim() + "\"=" + sp.split("=")[0].trim();
text = text.replaceFirst("\n", "");
textarea.setText(text);