একটি 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
এটি ব্যবহার করার সময় যদি আপনার অদৃশ্য হয়ে থাকে তবে এটি সম্ভবত সম্ভবত এর 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);
নতুন ডিফল্টসেলিটর শ্রেণি তৈরি করুন:
public static class Editor_name extends DefaultCellEditor {
public Editor_name(JCheckBox checkBox) {
super(checkBox);
}
@Override
public boolean isCellEditable(EventObject anEvent) {
return false;
}
}
এবং সেটসেলএডিটর ব্যবহার করুন:
JTable table = new JTable();
table.getColumn("columnName").setCellEditor(new Editor_name(new JCheckBox()));