super(new BorderLayout());
Vector data = new Vector(7);
String[] columnNames = { "French", "Spanish", "Italian" };
String[] oneData = { "un", "uno", "uno" };
String[] twoData = { "deux", "dos", "due" };
String[] threeData = { "trois", "tres", "tre" };
String[] fourData = { "quatre", "cuatro", "quattro" };
String[] fiveData = { "cinq", "cinco", "cinque" };
String[] sixData = { "six", "seis", "sei" };
String[] sevenData = { "sept", "siete", "sette" };
//Build the model.
SharedDataModel dataModel = new SharedDataModel(columnNames);
dataModel.addElement(oneData);
dataModel.addElement(twoData);
dataModel.addElement(threeData);
dataModel.addElement(fourData);
dataModel.addElement(fiveData);
dataModel.addElement(sixData);
dataModel.addElement(sevenData);
list = new JList(dataModel);
list.setCellRenderer(new DefaultListCellRenderer() {
public Component getListCellRendererComponent(JList l,
Object value,
int i,
boolean s,
boolean f) {
String[] array = (String[])value;
return super.getListCellRendererComponent(l,
array[0],
i, s, f);
}
});
listSelectionModel = list.getSelectionModel();
listSelectionModel.addListSelectionListener(
new SharedListSelectionHandler());
JScrollPane listPane = new JScrollPane(list);
table = new JTable(dataModel);
table.setSelectionModel(listSelectionModel);
JScrollPane tablePane = new JScrollPane(table);
//Build control area (use default FlowLayout).
JPanel controlPane = new JPanel();
String[] modes = { "SINGLE_SELECTION",
"SINGLE_INTERVAL_SELECTION",
"MULTIPLE_INTERVAL_SELECTION" };
final JComboBox comboBox = new JComboBox(modes);
comboBox.setSelectedIndex(2);
comboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String newMode = (String)comboBox.getSelectedItem();
if (newMode.equals("SINGLE_SELECTION")) {
listSelectionModel.setSelectionMode(
ListSelectionModel.SINGLE_SELECTION);
} else if (newMode.equals("SINGLE_INTERVAL_SELECTION")) {
listSelectionModel.setSelectionMode(
ListSelectionModel.SINGLE_INTERVAL_SELECTION);
} else {
listSelectionModel.setSelectionMode(
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
}
output.append("----------"
+ "Mode: " + newMode
+ "----------" + newline);
}
});
controlPane.add(new JLabel("Selection mode:"));
controlPane.add(comboBox);
//Build output area.
output = new JTextArea(10, 40);
output.setEditable(false);
JScrollPane outputPane = new JScrollPane(output,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
//Do the layout.
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
add(splitPane, BorderLayout.CENTER);
JPanel topHalf = new JPanel();
topHalf.setLayout(new BoxLayout(topHalf, BoxLayout.X_AXIS));
JPanel listContainer = new JPanel(new GridLayout(1,1));
listContainer.setBorder(BorderFactory.createTitledBorder(
"List"));
listContainer.add(listPane);
JPanel tableContainer = new JPanel(new GridLayout(1,1));
tableContainer.setBorder(BorderFactory.createTitledBorder(
"Table"));
tableContainer.add(tablePane);
tablePane.setPreferredSize(new Dimension(300, 100));
topHalf.setBorder(BorderFactory.createEmptyBorder(5,5,0,5));
topHalf.add(listContainer);
topHalf.add(tableContainer);
topHalf.setMinimumSize(new Dimension(400, 50));
topHalf.setPreferredSize(new Dimension(400, 110));
splitPane.add(topHalf);
JPanel bottomHalf = new JPanel(new BorderLayout());
bottomHalf.add(controlPane, BorderLayout.NORTH);
bottomHalf.add(outputPane, BorderLayout.CENTER);
//XXX: next line needed if bottomHalf is a scroll pane:
//bottomHalf.setMinimumSize(new Dimension(400, 50));
bottomHalf.setPreferredSize(new Dimension(450, 135));
splitPane.add(bottomHalf);