Java JList With Radiobuttons

How to Add Radiobuttons to a JList In Java Netbeans

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:


Java JList With Radiobuttons





Share this

Related Posts

Latest
Previous
Next Post »