Affichage des articles dont le libellé est JList With Radiobuttons In Java. Afficher tous les articles
Affichage des articles dont le libellé est JList With Radiobuttons In Java. Afficher tous les articles

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