2013-06-28 8 views
7

Java Swingを使用して、ワークステーション上のJavaシステムのプロパティ名と値を簡単に表示できますか?SwingによるJavaシステムのプロパティの表示

System Properties

+0

私はあなたがその質問をして1分後にそれに答えたことを知りました。私を間違えないでください、しかし、何がポイントですか? (私はSOの新人です) –

+1

@マルトン・ベルナルド:これまでのところ。 +60ポイント。 :-)私はメタ上の答えを見て、ここに投稿します。そしてここにそれがあります:http://meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-if-i-knew-the-answer-before-asking –

+0

それは良いです知っている! +1のメタ参照! –

答えて

7
+0

質問をする前に私は検索しました。私は本当にしました。 –

+1

+1、私は前にその投稿を見て覚えていません。 – camickr

+0

@GilbertLeBlancはい、私はあなた自身の質問に答えました。私はちょうど私の答えが良かったと思った、なぜあなたはそれが**あなたの質問への答えでもない**を言及しなかったので。しかし、あなたが気分を良くするなら、私はそれがどのように感じるか知っている。 ](http://stackoverflow.com/questions/10836832/show-an-animated-bg-in-swing)Q&A私はすべて自分自身に保つことを意図した。結局私は他の答えが確かに自分のものより良かったことを認めなければならなかった。あなたはこのケースでは合意しないかもしれませんが、害はありませんが、ただ知っています - はい、私はそこに... ..) –

5

コードは非常に簡単です:

基本的には、私が探しているこのような何かを表示するJava Swingアプリケーションです。 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()); 
    } 

} 
+0

ツールチップの+1; 'AbstractTableModel'を使って関連する[example](http://stackoverflow.com/a/9134371/230513)も参照してください。 – trashgod

2

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); 
    } 
} 
+0

特にパスのプロパティでその値を部分文字列にすることができます。 –

関連する問題