package genius.gui.panels; import java.awt.BorderLayout; import java.util.Arrays; import java.util.List; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; /** * A GUI to select a subset from a list of items. Just a bare list view. You * probably want to wrap this into a {@link JScrollPane}. */ @SuppressWarnings("serial") public class SubsetSelectionPanel extends JPanel { private SubsetSelectionModel model; private JList list = new JList(); public SubsetSelectionPanel(SubsetSelectionModel model) { this.model = model; initPanel(); } /** * Set basic panel contents: buttons, list area */ private void initPanel() { setLayout(new BorderLayout()); list.setModel(new ListModelAdapter<>(model)); list.setSelectionModel(new SelectionModelAdapter(model)); add(list, BorderLayout.CENTER); } /** * Set the cell renderer for the list items. * * @param renderer * the cell renderer for the list items. */ public void setCellRenderer(ListCellRenderer renderer) { list.setCellRenderer(renderer); } /** * simple stub to run this stand-alone (for testing). * * @param args */ public static void main(String[] args) { final JFrame gui = new JFrame(); gui.setLayout(new BorderLayout()); List allItems = Arrays.asList("een", "twee", "drie", "vier"); SubsetSelectionModel model = new SubsetSelectionModel(allItems); gui.getContentPane().add(new SubsetSelectionPanel(model), BorderLayout.CENTER); gui.pack(); gui.setVisible(true); } }