কিভাবে আমি একটি JTable এ একটি সারি লুকাতে পারি (সরাবো না)?

0
10706

এটি করার সবচেয়ে সহজ উপায় হল আপনার টেবিল মডেলের জন্য একটি ডেকোরেটর/ফিল্টার মডেল প্রয়োগ করা।

ডেকোরেটর টেবিলমডেল বাস্তবায়ন করবে, কিন্তু আপনি কোন সারিগুলি লুকাতে চান তার উপর ভিত্তি করে getValueAt(row,col) এ পাস করা প্যারামিটারগুলিকে টুইক করুন।

উদাহরণ স্বরূপ


পাবলিক ক্লাস RowFilterModel TableModel প্রয়োগ করে {...private boolean[] isRowHidden; ব্যক্তিগত int numVisibleRows; public RowFilterModel(TableModel realModel) { this.realModel = realModel; numVisibleRows = realModel.getRowCount(); isRowHidden = নতুন বুলিয়ান [সংখ্যা দৃশ্যমান সারি]; } পাবলিক int getRowCount() { রিটার্ন numVisibleRows; } পাবলিক int getColumnCount() { return realModel.getColumnCount(); } সর্বজনীন অকার্যকর সেটRowVisible(int row, boolean state) { isRowHidden[row] = !state; if (state) numVisibleRows++; অন্য numVisibleRows--; } পাবলিক অবজেক্ট getValueAt(int row, int col) { // return row-th non-hidden // এটি করার জন্য সম্ভবত আরও কার্যকর উপায় আছে... for(int realRow=0; true; realRow++) { if (! isRowHidden[realRow]) { if (row==0) { রিটার্ন realModel.getValueAt(count,col); } সারি--; } } } }

এই কাজটি করার জন্য স্পষ্টতই আরও কিছু করার আছে (এবং উপরের কোডটিতে কয়েকটি সমস্যা থাকতে পারে), তবে এটি মৌলিক ধারণা দেওয়া উচিত। বিশেষ করে, যখন রিয়েলটেবল পরিবর্তন হয় তখন সঠিকভাবে রিপোর্ট করার জন্য আপনাকে উপরের টেবিল মডেলের জন্য ইভেন্ট হ্যান্ডলিং সেট আপ করতে হবে। বাস্তব সারণী পরিবর্তিত হলে আপনাকে আসল মডেলের পরিবর্তনগুলি লুকানো সারি অ্যারে সামঞ্জস্য করতেও দেখতে হবে।

তারপর আপনি নিম্নলিখিত হিসাবে এটি ব্যবহার করতে পারেন:


JTable t = ...; RowFilterModel ফিল্টার = নতুন RowFilterModel(t.getModel()); t.setModel(ফিল্টার); ... filter.setRowVisible(42, true);

মনে রাখবেন যে আমি "isRowHidden" ব্যবহার করার জন্য ভিতরের যুক্তিটিকে উল্টে দিয়েছি - এটি এই সত্যটির সুবিধা নেয় যে আমরা যখন অ্যারে তৈরি করি, তখন এর মানগুলি মিথ্যা হবে, তাই ডিফল্টরূপে, সমস্ত সারি দৃশ্যমান হয়। যদি আমরা এটিকে "isRowVisible" বলতাম, তাহলে আমাদের অ্যারের সমস্ত উপাদানকে সত্যে সেট করতে হবে।

এখানে ব্যবহৃত মডেল ফিল্টারিং ধারণা সম্পর্কে আরও তথ্যের জন্য আমি আপনাকে IBM-এর VisualAge বিকাশকারী ডোমেনে আমার নিবন্ধ "অ্যাডভান্সড মডেল-ভিউ-কন্ট্রোলার টেকনিকস" পড়ার সুপারিশ করব। http://www7.software.ibm.com/vad.nsf/Data/Document2329 দেখুন।