import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel gui = new JPanel(new BorderLayout(5, 5));
JPanel plafComponents = new JPanel(new FlowLayout(FlowLayout.RIGHT, 3, 3));
plafComponents.setBorder(new TitledBorder(
"FlowLayout(FlowLayout.RIGHT, 3,3)"));
UIManager.LookAndFeelInfo[] plafInfos = UIManager
.getInstalledLookAndFeels();
String[] plafNames = new String[plafInfos.length];
for (int ii = 0; ii < plafInfos.length; ii++) {
plafNames[ii] = plafInfos[ii].getName();
}
JComboBox plafChooser = new JComboBox(plafNames);
plafComponents.add(plafChooser);
JCheckBox pack = new JCheckBox("Pack on PLAF change", true);
plafComponents.add(pack);
plafChooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
int index = plafChooser.getSelectedIndex();
try {
UIManager.setLookAndFeel(plafInfos[index].getClassName());
SwingUtilities.updateComponentTreeUI(frame);
if (pack.isSelected()) {
frame.pack();
frame.setMinimumSize(frame.getSize());
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
gui.add(plafComponents, BorderLayout.NORTH);
JPanel dynamicLabels = new JPanel(new BorderLayout(4, 4));
dynamicLabels.setBorder(new TitledBorder("BorderLayout(4,4)"));
gui.add(dynamicLabels, BorderLayout.WEST);
final JPanel labels = new JPanel(new GridLayout(0, 2, 3, 3));
labels.setBorder(new TitledBorder("GridLayout(0,2,3,3)"));
JButton addNew = new JButton("Add Another Label");
dynamicLabels.add(addNew, BorderLayout.NORTH);
addNew.addActionListener(new ActionListener() {
private int labelCount = 0;
public void actionPerformed(ActionEvent ae) {
labels.add(new JLabel("Label " + ++labelCount));
frame.validate();
}
});
dynamicLabels.add(new JScrollPane(labels), BorderLayout.CENTER);
String[] header = { "Name", "Value" };
String[] a = new String[0];
String[] names = System.getProperties().stringPropertyNames().toArray(a);
String[][] data = new String[names.length][2];
for (int ii = 0; ii < names.length; ii++) {
data[ii][0] = names[ii];
data[ii][1] = System.getProperty(names[ii]);
}
DefaultTableModel model = new DefaultTableModel(data, header);
JTable table = new JTable(model);
JScrollPane tableScroll = new JScrollPane(table);
Dimension tablePreferred = tableScroll.getPreferredSize();
tableScroll.setPreferredSize(new Dimension(tablePreferred.width,
tablePreferred.height / 3));
JPanel imagePanel = new JPanel(new GridBagLayout());
JLabel imageLabel = new JLabel("test");
imagePanel.add(imageLabel, null);
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
tableScroll, new JScrollPane(imagePanel));
gui.add(splitPane, BorderLayout.CENTER);
frame.setContentPane(gui);
frame.pack();
frame.setVisible(true);
}
}