2012-04-03 12 views
1

Ich habe eine kleine Funktion geschrieben, die eine Tabelle in einem Dialog anzeigt und Rat sucht, was zu bereinigen ist und welche Programmierpraxis es gibt, wenn es darum geht, mit Swing umzugehen.Welche Verbesserungen sollten an diesem JDialog-Snippet vorgenommen werden?

Welche Verbesserungen können auf alle konstruktive Kritik

//constraints for panel to fill out the frame 
GridBagConstraints grid = new java.awt.GridBagConstraints(); 
grid.fill = java.awt.GridBagConstraints.BOTH; 
grid.weightx = 1.0; 
grid.weighty = 1.0; 

//create jtable based on a table model created from an array 
JTable table = new JTable(testModel);  //a method creates my test model 
table.add(table.getTableHeader(), BorderLayout.PAGE_START); 
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(testModel); 
table.setRowSorter(sorter); 

//add scrollpane for visibility 
JScrollPane jscrollpane = new JScrollPane(table); 
table.setFillsViewportHeight(true); 

//add the scrollpane to a panel 
JPanel panel = new JPanel(); 
panel.setLayout(new GridBagLayout()); 
panel.add(jscrollpane, grid); 

//create for use with the dialog 
JFrame frame = new JFrame(); 

JDialog dialog = new JDialog(frame, "My Test Dialog", true); 
dialog.add(panel); 
dialog.pack(); 
dialog.setLocationRelativeTo(null); //added as advice of Stripies 
dialog.setVisible(true); 

Ich bin offen für meinen Code gemacht werden, wie es mein Ziel, die richtigen Techniken für die Programmierung mit Swing zu lernen.

Um zu klären, schaue ich, ob ich etwas herausnehmen oder verbessern kann.

+2

Um Ihren 'JDialog' zu zentrieren, können Sie einfach' setLocationRelativeTo (null) 'verwenden. – Stripies

+1

Alternativ kann 'setLocationByPlatform (true)' berücksichtigt werden. – trashgod

+1

Ein [sscce] (http://sscce.org/) ist oft dispositiver als ein Fragment, wie oft in den Antworten dieser [Mitwirkenden] (http://stackoverflow.com/tags/swing/topusers) zu sehen ist. – trashgod

Antwort

2

Was sind die Vorteile der Verwendung von setLocationByPlatform(true)?

Die Verwendung von setLocationRelativeTo(null) ist eine praktische Wahl für Beispiele, Demos und Dienstprogramme. Qualitätsanwendungen behalten die bevorzugte Position des Benutzers bei und zeichnen möglicherweise die letzte Einstellung in einer Instanz von java.util.Preferences auf. Da die Erfahrung eines Benutzers von Plattform zu Plattform unterschiedlich ist, stellt setLocationByPlatform(true) die besten Bemühungen des Implementierers dar, diese Erwartung zu erfüllen. Es ist eine bessere Wahl für den Standardstandort, wenn noch keine Präferenz vorhanden ist.

Verwandte Themen