public void propertyChange(PropertyChangeEvent evt) { if (evt.getNewValue() == evt.getOldValue()) { return; } if (evt.getPropertyName().equals(key) && evt.getNewValue() != null) { removeAll(); propertyTables = new ArrayList<PropertyTable>(); switch (type) { case LIST: List<?> l = (List<?>) evt.getNewValue(); final JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createEmptyBorder()); GroupLayout layout = new GroupLayout(panel); panel.setLayout(layout); GroupLayout.ParallelGroup horizontal = layout.createParallelGroup(); GroupLayout.SequentialGroup vertical = layout.createSequentialGroup(); for (int i = 0, size = l.size(); i < size; i++) { PropertyTable table = new PropertyTable(l.get(i), extractor); propertyTables.add(table); JTableHeader tableHeader = table.getTableHeader(); horizontal.add( layout.createParallelGroup(GroupLayout.LEADING).add(tableHeader).add(table)); vertical.add(layout.createSequentialGroup().add(tableHeader).add(table)); } layout.setHorizontalGroup(horizontal); layout.setVerticalGroup(vertical); add(new JScrollPane(panel), BorderLayout.CENTER); break; case TABLE: PropertyTable table = new PropertyTable(evt.getNewValue(), extractor); propertyTables.add(table); add(new JScrollPane(table), BorderLayout.CENTER); break; } repaint(); getParent().validate(); } }
public static void main(String[] args) { try { UIManager.setLookAndFeel(QuaquaLookAndFeel.class.getName()); } catch (Exception e) { } JFrame frame = new JFrame("OSXFORMTEST"); JPanel panel = new JPanel(); GroupLayout layout = new GroupLayout(panel); panel.setLayout(layout); if (UIManager.getLookAndFeel().getID().equals("Aqua")) { layout.setAutocreateGaps(true); layout.setAutocreateContainerGaps(true); } JLabel artistLabel = new JLabel("Artist"); JLabel albumLabel = new JLabel("Album"); JTextField artist = new JTextField("Sonic Youth"); JTextField album = new JTextField("Bad Moon Rising"); int labelAlignment = UIManager.getLookAndFeel().getID().equals("Aqua") ? GroupLayout.TRAILING : GroupLayout.LEADING; GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup(); hGroup.add(layout.createParallelGroup(labelAlignment).add(artistLabel).add(albumLabel)); hGroup.add(layout.createParallelGroup().add(artist).add(album)); layout.setHorizontalGroup(hGroup); GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup(); vGroup.add(layout.createParallelGroup(GroupLayout.BASELINE).add(artistLabel).add(artist)); vGroup.add(layout.createParallelGroup(GroupLayout.BASELINE).add(albumLabel).add(album)); layout.setVerticalGroup(vGroup); frame.add(panel); frame.pack(); frame.setVisible(true); }