使用 javax.swing/javafx 在文本区域中列出系统属性
List System Properties in a textarea using javax.swing/javafx
如何在 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......
如果您希望每个 key/value 单独一行,您可以这样做:
String out = System.getProperties().toString.replaceAll(", ", "\n");
textarea.setText(out);
如果textArea使用“\n”来分隔行,我不肯定,但它会有一个分隔符。
如果您希望键在引号中,则在属性上使用枚举。
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());
把你的代码写成这样(我尽量缩短它):
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);
这个使用 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)
如何在 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......
如果您希望每个 key/value 单独一行,您可以这样做:
String out = System.getProperties().toString.replaceAll(", ", "\n");
textarea.setText(out);
如果textArea使用“\n”来分隔行,我不肯定,但它会有一个分隔符。
如果您希望键在引号中,则在属性上使用枚举。
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());
把你的代码写成这样(我尽量缩短它):
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);
这个使用 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)