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 )
फिर setModel()
अपनी विधि का उपयोग करें JTable
।
JTable myTable = new JTable();
myTable.setModel(new MyModel());
public void
बूलियन को वापस करने की कोई विधि नहीं हो सकती है ।
isCellEditable
आप विधि को ओवरराइड कर सकते हैं
//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 गायब हो गया है
यदि 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.setDefaultEditor(Object.class, null);
बस जोड़ दो
table.setEnabled(false);
यह मेरे लिए ठीक काम करता है।
यदि आप मानों के एक सेट से "नए जेटबल (वेक्टर, वेक्टर)" के साथ स्वचालित रूप से टेबलमॉडल बना रहे हैं, तो शायद स्तंभों से संपादकों को हटाना आसान है:
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
}
संपादकों के बिना, डेटा संपादन योग्य नहीं होगा।
new JTable(Vector, Vector)
और मेरे लिए काम किया। मुझे किसी सेल में कोई संपादक नहीं चाहिए, इसलिए आपको मेरा वोट चाहिए।
मैंने इसका उपयोग किया और यह काम किया: यह बहुत सरल है और ठीक काम करता है।
JTable myTable = new JTable();
myTable.setEnabled(false);
नया 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()));