how to create jcombobox with jcheck box and multiple selection
11,832
The simplest solution might be to create a popup menu with a JCheckBoxMenuItem
for each option, and then attach that popup menu to a button that displays whatever you would want to show for the "selected item".
final JPopupMenu menu = new JPopupMenu();
menu.add(new JCheckBoxMenuItem("Other Court"));
menu.add(new JCheckBoxMenuItem("Tribunal Court"));
menu.add(new JCheckBoxMenuItem("High Court"));
menu.add(new JCheckBoxMenuItem("Supreme Court"));
final JButton button = new JButton();
button.setAction(new AbstractAction("Court") {
@Override
public void actionPerformed(ActionEvent e) {
menu.show(button, 0, button.getHeight());
}
});
JFrame frame = new JFrame();
frame.getContentPane().add(button);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Author by
adesh singh
Application Programmer (Java , Python ) , Freelancer and Youtuber I publish programming related videos Link to my Youtube Channel: https://www.youtube.com/c/techyadesh
Updated on June 04, 2022Comments
-
adesh singh almost 2 years
I want to create JComboBox with checkboxes and multiple selection . i have created a list with check box after rendering the jlist . I dont know how to render it with jcombobox . Or is it possible to make jlist as drop down list like combo box . for jlist rendering i am using the following code
DefaultListModel listModel = new DefaultListModel(); ListCheckBox li= new ListCheckBox(listModel); JScrollPane jsp= new JScrollPane(li); add(jsp); listModel.add(0,new JCheckBox("Other Court")); listModel.add(0,new JCheckBox("Tribunal Court")); listModel.add(0,new JCheckBox("High Court")); listModel.add(0,new JCheckBox("Supreme Court"));
ListCheck Box class is as following
import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class ListCheckBox extends JList { protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); public ListCheckBox(DefaultListModel model) { super(model) ; setCellRenderer(new CellRenderer()); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { int index = locationToIndex(e.getPoint()); if (index != -1) { JCheckBox checkbox = (JCheckBox) getModel().getElementAt(index); checkbox.setSelected( !checkbox.isSelected()); repaint(); } } } ); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); } protected class CellRenderer implements ListCellRenderer { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JCheckBox checkbox = (JCheckBox) value; checkbox.setBackground(isSelected ? getSelectionBackground() : getBackground()); checkbox.setForeground(isSelected ? getSelectionForeground() : getForeground()); checkbox.setEnabled(isEnabled()); checkbox.setFont(getFont()); checkbox.setFocusPainted(false); checkbox.setBorderPainted(true); checkbox.setBorder(isSelected ? UIManager.getBorder( "List.focusCellHighlightBorder") : noFocusBorder); return checkbox; } } }
-
adesh singh about 11 yearsthis hides the combobox on a single item selection but i want it should stop till the user doesnt click on combo box again
-
Russell Zahniser about 11 yearsYou can do this by just reopening the menu when one of the items is clicked on.