How to Add Radiobuttons to a JList In Java Netbeans
In this Java Tutorial we will see How To Create a JList With JRadioButtons 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.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.SwingConstants;
/**
*
* @author 1BestCsharp
*/
public class RadioListFrame extends JFrame{
private final RadioListElement[] elements = {
new RadioListElement("Radio 1"),
new RadioListElement("Radio 2"),
new RadioListElement("Radio 3"),
new RadioListElement("Radio 4"),
new RadioListElement("Radio 5")
};
private RadioListElement selectedElement;
private JList<RadioListElement> radioList;
private final JLabel selectedLabel;
public RadioListFrame(){
setTitle("Radio List Frame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// Create JList with custom cell renderer
radioList = new JList<>(elements);
radioList.setCellRenderer(new RadioListRenderer());
// Set the first item as the default selection
radioList.setSelectedIndex(0);
selectedElement = elements[0];
// Add a list selection listener to handle item state changes
radioList.addListSelectionListener((e) -> {
selectedElement = radioList.getSelectedValue();
updateSelectedLabel();
radioList.repaint();
});
add(new JScrollPane(radioList), BorderLayout.CENTER);
// Create and add a label to display the selected item
selectedLabel = new JLabel("Selected Item: " + selectedElement.getLabel());
selectedLabel.setHorizontalAlignment(SwingConstants.CENTER);
add(selectedLabel, BorderLayout.SOUTH);
setSize(300,200);
setLocationRelativeTo(null);
}
// Create a method to update the selected label
public void updateSelectedLabel(){
selectedLabel.setText("Selected Item: " + (selectedElement != null ? selectedElement .getLabel() : ""));
}
// Create a class representing elements in the radio list
public static class RadioListElement{
private final String label;
public RadioListElement(String label){ this.label = label; }
public String getLabel(){
return label;
}
}
// Create a custom renderer for the radio list
private class RadioListRenderer extends JRadioButton implements ListCellRenderer<RadioListElement>{
public RadioListRenderer(){
setFont(new Font("Arial", Font.PLAIN, 20));
}
@Override
public Component getListCellRendererComponent(JList<? extends RadioListElement> list, RadioListElement value, int index, boolean isSelected, boolean cellHasFocus) {
// Set the appearance of the renderer based on the item state
setEnabled(list.isEnabled());
setSelected(value == selectedElement);
setText(value.getLabel());
if(isSelected){
// Change background color for selected items
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else{
// Use default colors for non-selected items
setBackground(list.getBackground());
setForeground(list.getForeground());
}
return this;
}
}
public static void main(String[] args) {
RadioListFrame frame = new RadioListFrame();
frame.setVisible(true);
}
}
The Final Result:
More Java Projects:
- Java Hotel Management System Source Code
- Java Real Estate Management System
- Download All Java Projects Source Code
- Java Real Estate Management System
- Download All Java Projects Source Code
Download Projects Source Code