How to Add Buttons to a Combobox In Java Netbeans
In this Java Tutorial we will see How To Create a JCombobox With Buttons Inside It In Java Using Netbeans.
What We Are Gonna Use In This Project:
- Java Programming Language.- NetBeans Editor.
Project Source Code:
package new_tutorials;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
/**
*
* @author 1BestCsharp
*/
public class ButtonsComboboxFrame extends JFrame{
private ButtonComboboxElement selectedItem;
private JComboBox<ButtonComboboxElement> comboBox;
private final JLabel selectedLabel;
public ButtonsComboboxFrame(){
// set up the frame
setTitle("Buttons-Combobox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
// create the combobox
comboBox = new JComboBox<>();
// set the renderer to the combobox
comboBox.setRenderer(new ButtonComboboxRenderer());
// add items to the combobox
comboBox.addItem(new ButtonComboboxElement("Apple", true));
comboBox.addItem(new ButtonComboboxElement("Tomato", false));
comboBox.addItem(new ButtonComboboxElement("Orange", false));
comboBox.addItem(new ButtonComboboxElement("Potato", false));
comboBox.addItem(new ButtonComboboxElement("Banana", false));
// Set the first item as the default selection
selectedItem = (ButtonComboboxElement) comboBox.getItemAt(0);
selectedItem.setSelected(true);
// Add an item listener to handle item state changes
comboBox.addItemListener((e) -> {
ButtonComboboxElement newElement = (ButtonComboboxElement) comboBox.getSelectedItem();
if(selectedItem != null){ selectedItem.setSelected(false); }
if(newElement != null){
newElement.setSelected(true);
selectedItem = newElement;
}
// Update the selected label and repaint the combo box
updateSelectedLabel();
comboBox.repaint();
});
add(comboBox);
selectedLabel = new JLabel("Selected Item: " + selectedItem.getLabel());
add(selectedLabel);
setSize(300,300);
setLocationRelativeTo(null);
}
// Method to update the selected label text
public void updateSelectedLabel(){
selectedLabel.setText("Selected Item: " + (selectedItem != null ? selectedItem.getLabel() : ""));
}
// Inner class representing an element in the combobox
public static class ButtonComboboxElement{
private final String label;
private boolean selected;
// Constructor
public ButtonComboboxElement(String label, boolean selected){
this.label = label;
this.selected = selected;
}
// Getters and Setters
public String getLabel(){ return label; }
public boolean isSelected(){ return selected; }
public void setSelected(boolean selected){
this.selected = selected;
}
}
// Inner class serving as the renderer for the combobox items
private class ButtonComboboxRenderer extends JButton implements ListCellRenderer<ButtonComboboxElement>{
private final int BUTTON_MARGIN = 5;
public ButtonComboboxRenderer(){
setMargin(new Insets(BUTTON_MARGIN, BUTTON_MARGIN, BUTTON_MARGIN, BUTTON_MARGIN));
}
@Override
public Component getListCellRendererComponent(JList<? extends ButtonComboboxElement> list, ButtonComboboxElement value, int index, boolean isSelected, boolean cellHasFocus) {
setEnabled(list.isEnabled());
setText(value.getLabel());
return this;
}
}
public static void main(String[] args) {
ButtonsComboboxFrame frame = new ButtonsComboboxFrame();
frame.setVisible(true);
}
}
The Final Result:
More Java Projects:
Download Projects Source Code