2013-06-28 13 views
7

Czy istnieje prosty sposób, aby użyć Java Swing, aby wyświetlić nazwy i wartości właściwości systemu Java na mojej stacji roboczej?Wyświetl właściwości systemu Java ze Swingiem

Zasadniczo co szukam to aplikacja Java Swing, który wyświetla coś takiego:

System Properties

+0

Właśnie uświadomiłem sobie, że zadał pytanie i odpowiedział na to minutę później. Nie zrozum mnie źle, ale o co ci chodzi? (Jestem nowy w SO) –

+1

@Marlon Bernardes: Do tej pory. +60 punktów. :-) Sprawdzę odpowiedź na meta i opublikuję ją tutaj. I oto jest: http://meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-if-i-knew-the-answer-before-asking –

+0

To dobrze wiedzieć! +1 dla meta odniesienia! –

Odpowiedz

7
+0

Zrobiłem wyszukiwanie, zanim zapytałem/odpowiedziałem na pytanie. Naprawdę. –

+1

+1, nie pamiętam wcześniej tego ogłoszenia. – camickr

+0

@GilbertLeBlanc Tak, zrobiłem * zauważyłem, że odpowiedziałeś na własne pytanie. Po prostu myślałem, że moja odpowiedź jest lepsza, a ponieważ nie wspomniałeś, dlaczego to było ** nie ** to także odpowiedź na twoje pytanie .. Ale jeśli to sprawia, że ​​czujesz się lepiej, wiem, co to jest .. Zobacz [to pytanie ] (http://stackoverflow.com/questions/10836832/show-an-animated-bg-in-swing) na pytania i odpowiedzi Chciałem zatrzymać wszystko dla siebie. W końcu musiałem przyznać, że druga odpowiedź była rzeczywiście lepsza niż moja. Możesz się nie zgodzić w tym przypadku, nie szkodzić, ale po prostu wiem - tak, byłem tam ..;) –

5

Kod jest dość prosta. Utwórz JTable wewnątrz JScrollPane, wewnątrz JFrame.

Musiałem wpisać kilka linii kodu, aby zbudować model tabeli dla JTable. Posortowałem nazwy właściwości, aby ułatwić ich odnalezienie.

Zastąpienie metody prepareRenderer metody JTable pokazuje wskazówki narzędzi dla wszystkich komórek. Komórki, które wymagają wyświetlenia wskazówka narzędzia są dwie komórki wartości z ciągami ścieżek.

Nazwy właściwości systemu w systemie mogą różnić się od nazw właściwości systemowych w innych systemach. Systemy Windows i Unix mają swój unikalny zestaw nazw właściwości systemowych.

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 dla podpowiedzi; zobacz także ten powiązany [przykład] (http://stackoverflow.com/a/9134371/230513) używając 'AbstractTableModel'. – trashgod

2

Możesz uzyskać dostęp do właściwości systemu za pomocą System.getProperties(). Następnie wszystko, co musisz zrobić, to iterować klucze i manipulować danymi w pożądany sposób.

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

Możesz chcieć podciąć tę wartość, szczególnie we właściwościach ścieżki. –

Powiązane problemy