有没有一种简单的方法,使用 Java Swing,在我的工作站上显示 Java 系统属性名称和值?
基本上,我正在寻找的是一个显示如下内容的 Java Swing 应用程序:
有没有一种简单的方法,使用 Java Swing,在我的工作站上显示 Java 系统属性名称和值?
基本上,我正在寻找的是一个显示如下内容的 Java Swing 应用程序:
另请参阅Java 中有用环境设置列表的答案。
代码非常简单。在 JFrame 内的 JScrollPane 内创建一个 JTable。
我必须输入几行代码来为 JTable 构建表格模型。我对属性名称进行了排序,以便于查找。
JTable prepareRenderer 方法的覆盖显示所有单元格的工具提示。需要工具提示显示的单元格是带有路径字符串的两个值单元格。
您系统上的系统属性名称可能与其他系统上的系统属性名称不同。Windows 和 Unix 都有自己独特的系统属性名称集。
import java.awt.Component;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class SystemProperties implements Runnable {
@Override
public void run() {
JFrame frame = new JFrame("System Properties");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(createSystemPropertiesTableModel()) {
private static final long serialVersionUID = 4957089825220999913L;
@Override
public Component prepareRenderer(TableCellRenderer renderer,
int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
if (c instanceof JComponent) {
JComponent jc = (JComponent) c;
String s = getValueAt(row, column).toString();
jc.setToolTipText(s);
}
return c;
}
};
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
private DefaultTableModel createSystemPropertiesTableModel() {
DefaultTableModel model = new DefaultTableModel();
model.addColumn("Property");
model.addColumn("Value");
Properties p = System.getProperties();
Set<Object> keys = p.keySet();
SortedSet<Object> sortedKeys = new TreeSet<Object>(keys);
Iterator<Object> iter = sortedKeys.iterator();
while (iter.hasNext()) {
String key = iter.next().toString();
String value = p.getProperty(key);
String[] row = { key, value };
model.addRow(row);
}
return model;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new SystemProperties());
}
}
您可以使用 访问系统属性System.getProperties()
。然后你所要做的就是迭代它的键并以你想要的方式操作数据。
public static void main(String[] args) {
Properties systemProperties = System.getProperties();
Enumeration<?> e = systemProperties.propertyNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
String value = systemProperties.getProperty(key);
System.out.println(key + " -- " + value);
}
}