使用javax.swing / javafx列出textarea中的系统属性

时间:2016-04-05 19:34:43

标签: java swing javafx javafx-8 jtextarea

如何在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......

3 个答案:

答案 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);