8

Java Swing を使用して、ワークステーションに Java システム プロパティの名前と値を表示する簡単な方法はありますか?

基本的に、私が探しているのは、次のようなものを表示する Java Swing アプリケーションです。

システムプロパティ

4

3 に答える 3

5

コードは非常に簡単です。JFrame 内の JScrollPane 内に JTable を作成します。

JTable のテーブル モデルを作成するには、数行のコードを入力する必要がありました。見つけやすいように、プロパティ名を並べ替えました。

JTable prepareRenderer メソッドのオーバーライドにより、すべてのセルのツール ヒントが表示されます。ツール ヒントの表示が必要なセルは、パス文字列を持つ 2 つの値のセルです。

お使いのシステムのシステム プロパティ名は、他のシステムのシステム プロパティ名と同じではない場合があります。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());
    }

}
于 2013-06-28T13:05:55.893 に答える