/*
Code revised from Desktop Java Live:
http://www.sourcebeat.com/downloads/
*/
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListModel;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.adapter.Bindings;
import com.jgoodies.binding.adapter.SingleListSelectionAdapter;
import com.jgoodies.binding.list.ArrayListModel;
import com.jgoodies.binding.list.SelectionInList;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
public class AbstractTableModelExample extends JPanel {
private ArrayListModel arrayListModel;
public AbstractTableModelExample() {
super(new BorderLayout());
DefaultFormBuilder defaultFormBuilder = new DefaultFormBuilder(new FormLayout("p, 2dlu, p:g"));
defaultFormBuilder.setDefaultDialogBorder();
this.arrayListModel = new ArrayListModel();
this.arrayListModel.add(new DisplayTechnology("Swing", "Is a Java API", "Sun"));
this.arrayListModel.add(new DisplayTechnology("Flash", "Is NOT a Java API", "Macromedia"));
this.arrayListModel.add(new DisplayTechnology("SWT", "Is a Java API", "Eclipse"));
this.arrayListModel.add(new DisplayTechnology("QT", "Is NOT a Java API", "Trolltech"));
this.arrayListModel.add(new DisplayTechnology("AWT", "Is a Java API", "Sun"));
SelectionInList selectionInList = new SelectionInList((ListModel) this.arrayListModel);
JList jlist = new JList();
Bindings.bind(jlist, selectionInList);
defaultFormBuilder.append("List Model: ", new JScrollPane(jlist));
JTable table = new JTable(new DisplayTechnologyTableAdapter(selectionInList, new String[]{"Name", "Description",
"Maker"}));
table.setSelectionModel(new SingleListSelectionAdapter(
selectionInList.getSelectionIndexHolder()));
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(table.getPreferredSize());
defaultFormBuilder.append("Table", scrollPane);
add(defaultFormBuilder.getPanel());
}
private class DisplayTechnology {
private String name;
private String description;
private String maker;
public DisplayTechnology(String name, String description, String maker) {
this.name = name;
this.description = description;
this.maker = maker;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public String getMaker() {
return maker;
}
public String toString() {
return name;
}
}
private class DisplayTechnologyTableAdapter extends AbstractTableAdapter {
public DisplayTechnologyTableAdapter(ListModel listModel, String[] columnNames) {
super(listModel, columnNames);
}
public Object getValueAt(int rowIndex, int columnIndex) {
DisplayTechnology displayTechnology = (DisplayTechnology) getRow(rowIndex);
if (columnIndex == 0) {
return displayTechnology.getName();
} else if (columnIndex == 1) {
return displayTechnology.getDescription();
} else {
return displayTechnology.getMaker();
}
}
}
public static void main(String[] a){
JFrame f = new JFrame("Abstract TableModel Example");
f.setDefaultCloseOperation(2);
f.add(new AbstractTableModelExample());
f.pack();
f.setVisible(true);
}
}
|