"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > JTable समूहों में रेडियो बटन जोड़ते समय विशिष्टता कैसे प्राप्त करें?

JTable समूहों में रेडियो बटन जोड़ते समय विशिष्टता कैसे प्राप्त करें?

2024-11-22 को प्रकाशित
ब्राउज़ करें:590

How to Achieve Exclusivity When Adding Radio Buttons to JTable Groups?

JTable में समूहों में रेडियो बटन जोड़ना

समस्या विवरण

एक रेंडरर और संपादक का उपयोग करके JTable में रेडियो बटन जोड़ने का प्रयास परिणामस्वरूप हुआ विशिष्टता प्राप्त करने में असमर्थता. प्रदान किया गया कोड स्निपेट समस्या को दर्शाता है।

वैकल्पिक समाधान

एक विकल्प के रूप में, एक पंक्ति के भीतर परस्पर अनन्य विकल्पों के लिए एक संपादक के रूप में JComboBox का उपयोग करने पर विचार करें। यह अंतरिक्ष प्रबंधन और उपयोगकर्ता अनुभव के लिए एक अधिक कुशल दृष्टिकोण है।

कोड उदाहरण

// ...
// Import declarations
// ...

public class JRadioAsRendererEditor extends JPanel {

    // ...
    // Class variables and methods
    // ...

    private class StatusRenderer extends StatusPanel implements TableCellRenderer {

        // ...
        // Overridden methods
        // ...

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
            setStatus((Status) value);
            if (isSelected) {
                setBackground(table.getSelectionBackground());
            } else {
                setBackground(table.getBackground());
            }
            return this;
        }
    }
}

अतिरिक्त विकल्प

1. वैकल्पिक रेंडरर और संपादक

आप वांछित व्यवहार प्राप्त करने के लिए अपने स्वयं के कस्टम रेंडरर और संपादक वर्ग बना सकते हैं। यहां एक उदाहरण है:

public class RadioCellRenderer extends DefaultTableCellRenderer {

    private RadioButtonGroup group;

    public RadioCellRenderer(RadioButtonGroup group) {
        this.group = group;
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
        JRadioButton button = (JRadioButton) value;
        button.setSelected(group.isSelected(button));
        return button;
    }
}

public class RadioCellEditor extends DefaultCellEditor {

    private RadioButtonGroup group;

    public RadioCellEditor(JRadioButtonCheckBox box, RadioButtonGroup group) {
        super(box);
        this.group = group;
    }

    @Override
    public Object getCellEditorValue() {
        return delegate.get();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value,
        boolean isSelected, int row, int column) {
        JRadioButton button = (JRadioButton) value;
        if (group.isClearable()) {
            group.clearSelection();
        }
        group.add(button);
        return button;
    }
}

2. DefaultTableCellRenderer और DefaultCellEditor

आप एक कस्टम JRadioButton के साथ DefaultTableCellRenderer और DefaultCellEditor कक्षाओं का उपयोग कर सकते हैं जो विशिष्टता को संभालता है। यहां एक उदाहरण दिया गया है:

public class ExclusiveJRadioButton extends JRadioButton {

    private RadioButtonGroup group;

    public ExclusiveJRadioButton(RadioButtonGroup group) {
        this.group = group;
        addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                group.setSelected(ExclusiveJRadioButton.this, true);
            }
        });
    }

    @Override
    public void setSelected(boolean selected) {
        if (group.isSelected(this)) {
            return;
        }
        super.setSelected(selected);
    }
}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3