繁体   English   中英

使用Swing显示Java系统属性

[英]Display Java System Properties with Swing

有没有一种简单的方法,使用Java Swing,在我的工作站上显示Java系统属性名称和值?

基本上,我正在寻找的是一个Java Swing应用程序,它显示如下:

系统属性

代码非常简单。 在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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM