2016-04-05 11 views
0

wie kann ich alle Systemeigenschaften in einem javafx oder Swing-Textarea angezeigt werden; in einem Format wie "key1" = value1 "key2" = Wert2 Ich versuchte *textarea.setText(System.getProperties().toString()),* aber, dass es genau wie diese aufgeführt sind;Liste Systemeigenschaften in einem Textfeld mit javax.swing/javafx

{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...... 

Antwort

1

Eine Version dieser Java unter Verwendung von 8 Funktionen wie

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"))); 

aussehen würde, wenn Sie brauchen keine Anführungszeichen um die Schlüssel, können Sie die Karte Schritt mit dem einfacheren

.map(Object::toString) 
ersetzen
+0

Sehr nett! –

+0

Danke Kumpel, funktioniert es in JavaFX genauso? :) – Pl4gue

+0

Das JavaFX-Code ist ... Ersetzen Sie die erste Zeile mit dem kommentierten-out Linie, wenn Sie Schaukel wollen. –

0

Sie können sich wahrscheinlich so etwas wie dies tun, wenn Sie jeden Schlüssel/Wert auf einer separaten Zeile wollen:

String out = System.getProperties().toString.replaceAll(", ", "\n"); 
textarea.setText(out); 

Ich bin nicht positiv, wenn das Textfeld den „\ n“ für Linientrennung verwendet, aber es wird ein Trennzeichen haben.

Wenn Sie den Schlüssel in Anführungszeichen sein wollen, dann die Aufzählung der Eigenschaften verwenden.

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()); 
0

Machen Sie den Code dieses (Ich habe versucht, es zu verkürzen, so viel wie ich konnte):

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