2013-06-28 14 views
7

Gibt es eine einfache Möglichkeit, Java Swing zum Anzeigen der Java-Systemeigenschaftsnamen und -werte auf meiner Workstation zu verwenden?Java-Systemeigenschaften mit Swing anzeigen

Im Grunde, was ich suche ist eine Java-Swing-Anwendung, die so etwas wie dies zeigt:

System Properties

+0

Ich habe erkannt, dass Sie die Frage gestellt und beantwortet sie später eine Minute. Versteh mich nicht falsch, aber was ist der Sinn? (Ich bin neu in SO) –

+1

@Marlon Bernardes: So weit. +60 Punkte. :-) Ich werde die Antwort auf Meta nachschlagen und hier posten. Und hier ist es: http://meta.stackexchange.com/questions/17463/cani-answer-my-own-questions-even-if-i-knew-the-answer-before-asking –

+0

Das ist gut zu kennt! +1 für Meta-Referenz! –

Antwort

7
+0

Ich habe eine Suche durchgeführt, bevor ich die Frage gestellt habe. Ich habe es wirklich getan. –

+1

+1, ich kann mich nicht daran erinnern, dieses Posting vorher gesehen zu haben. – camickr

+0

@GilbertLeBlanc Ja, ich * habe * bemerkt, dass du deine eigene Frage beantwortet hast. Ich dachte nur, dass meine Antwort besser wäre, und da du nicht erwähnt hast, warum es * nicht ** auch eine Antwort auf deine Frage war ... Aber wenn es dich besser fühlen lässt, weiß ich, wie es sich anfühlt .. Siehe [diese Frage ] (http://stackoverflow.com/questions/10836832/show-ananimated-bg-in-swing) für eine Frage und Antwort Ich wollte alles für mich behalten. Am Ende musste ich zugeben, dass die andere Antwort in der Tat besser war als meine eigene. Du wirst vielleicht in diesem Fall nicht zustimmen, kein Schaden angerichtet, aber nur wissen - ja, ich war da ..;) –

5

Der Code ist ziemlich einfach. Erstellen Sie eine JTable innerhalb eines JScrollPane innerhalb eines JFrames.

Ich musste ein paar Zeilen Code eingeben, um ein Tabellenmodell für die JTable zu erstellen. Ich habe die Eigenschaftsnamen sortiert, damit sie leichter zu finden sind.

Die Überschreibung der JTable preparateRenderer-Methode zeigt QuickInfos für alle Zellen an. Die Zellen, die die Anzeige der Werkzeugspitze benötigen, sind die zwei Wertzellen mit Pfadzeichenfolgen.

Die Systemeigenschaftsnamen auf Ihrem System stimmen möglicherweise nicht mit den Systemeigenschaftsnamen auf anderen Systemen überein. Windows und Unix haben jeweils eigene eindeutige Systemeigenschaftsnamen.

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 für Tooltips; Siehe auch dieses verwandte [Beispiel] (http://stackoverflow.com/a/9134371/230513) unter Verwendung von 'AbstractTableModel'. – trashgod

2

Sie können auf Systemeigenschaften zugreifen, indem Sie System.getProperties() verwenden. Dann müssen Sie nur noch die Schlüssel durchlaufen und die Daten so manipulieren, wie Sie möchten.

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

Sie können diesen Wert insbesondere für die Pfadeigenschaften subtrahieren. –