दिलचस्प पोस्ट
जब जावा जेनेरिक्स की आवश्यकता होती है? टी के बजाय <T> बढ़ाता है और स्विचन के कोई नकारात्मक पहलू है? मिलिसेकंड को "hh: mm: ss" प्रारूप में कनवर्ट कैसे करें? किसी भी तरह से मुख्य डेटा को पॉप्युलेट करने के लिए? गतिशील रूप से जावास्क्रिप्ट में सीएसएस वर्ग कैसे बनाते हैं और लागू होते हैं? निर्धारित करें कि किस JAR फाइल को एक वर्ग से है मैं जावास्क्रिप्ट ऑब्जेक्ट को नाम के रूप में एक वैरिएबल का उपयोग करने के लिए एक संपत्ति कैसे जोड़ूं? क्या ईफेल वास्तव में हर समय अपने वैक्टर दोनों की गणना करता है? क्या यह धीमा है? एपीके प्रोग्रामेंटल रूप से स्थापित / अनइंस्टॉल करें (पैकेज मैनेजर वि इंटेंट्स) जावास्क्रिप्ट का उपयोग कर पेज को कैसे पुनः लोड करें? अपनी सभी गतिविधियों के साथ एक आवेदन कैसे मार सकता है? जावास्क्रिप्ट / jQuery के साथ एक HTML तत्व से सभी गुण प्राप्त करें क्वेरी पैरामीटर के लिए पथ सेगमेंट की एक मनमाना संख्या को पुनः लिखना क्या जावा में स्मृति अपवाद को पकड़ना संभव है? सी ++ प्रोग्रामर 'नए' का उपयोग कम क्यों करना चाहिए? प्रत्यक्ष बनाम नियुक्त – jQuery .on ()

कैसे एक JTable गैर-संपादन योग्य बनाने के लिए

कैसे एक JTable गैर-संपादन योग्य बनाने के लिए? मैं नहीं चाहता हूं कि मेरे उपयोगकर्ता कोशिकाओं में मूल्यों को डबल-क्लिक करके संपादित कर सकें।

वेब के समाधान से एकत्रित समाधान "कैसे एक JTable गैर-संपादन योग्य बनाने के लिए"

आप एक TableModel उपयोग कर सकते हैं

इस तरह एक वर्ग को परिभाषित करें:

 public class MyModel extends AbstractTableModel{ //not necessary } 

वास्तव में isCellEditable() डिफ़ॉल्ट रूप से false है इसलिए आप इसे समाप्त कर सकते हैं। (देखें: http://docs.oracle.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html )

फिर अपने JTable setModel() विधि का उपयोग करें

 JTable myTable = new JTable(); myTable.setModel(new MyModel()); 

आप विधि को ओवरराइड कर सकते हैं CELEditable और लागू करें जैसा आप उदाहरण के लिए चाहते हैं:

 //instance table model DefaultTableModel tableModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { //all cells false return false; } }; table.setModel(tableModel); 

या

 //instance table model DefaultTableModel tableModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { //Only the third column return column == 3; } }; table.setModel(tableModel); 

ध्यान दें कि अगर आपका जेटेबल गायब हो जाता है

यदि आपका JTable गायब हो रहा है जब आप इसका उपयोग करते हैं तो यह सबसे अधिक संभावना है क्योंकि आपको DefaultTableModel(Object[][] data, Object[] columnNames) कन्स्ट्रक्टर का उपयोग करने की आवश्यकता है।

 //instance table model DefaultTableModel tableModel = new DefaultTableModel(data, columnNames) { @Override public boolean isCellEditable(int row, int column) { //all cells false return false; } }; table.setModel(tableModel); 

बस जोड़ दो

 table.setEnabled(false); 

यह मेरे लिए ठीक काम करता है।

 table.setDefaultEditor(Object.class, null); 

यदि आप टेबलमोडेल को अपने मूल्यों के एक सेट से "नया जेटेबल (वेक्टर, वेक्टर)" से बना रहे हैं, तो शायद स्तंभों से संपादकों को निकालना आसान है:

 JTable table = new JTable(my_rows, my_header); for (int c = 0; c < table.getColumnCount(); c++) { Class<?> col_class = table.getColumnClass(c); table.setDefaultEditor(col_class, null); // remove editor } 

संपादकों के बिना, डेटा संपादन योग्य नहीं होगा।

नया DefaultCellEditor वर्ग बनाएँ:

 public static class Editor_name extends DefaultCellEditor { public Editor_name(JCheckBox checkBox) { super(checkBox); } @Override public boolean isCellEditable(EventObject anEvent) { return false; } } 

और setCellEditor का उपयोग करें:

 JTable table = new JTable(); table.getColumn("columnName").setCellEditor(new Editor_name(new JCheckBox())); 

मैंने इसका इस्तेमाल किया और यह काम किया: यह बहुत सरल है और ठीक काम करता है।

 JTable myTable = new JTable(); myTable.setEnabled(false);