Dalam soalan sebelumnya, tumpuan adalah pada memformat lajur JTable sebagai rentetan tetapi dengan fungsi pengisihan sebagai dua kali ganda. Berikutan perbincangan ini, persoalan baharu timbul: Bagaimana untuk mengekalkan pemaparan sel selepas mengedit nilai sel?
Secara khusus, isunya ialah selepas menggunakan pemapar sel tersuai untuk memformat sel, dan kemudian melaksanakan editor JTextField , pemformatan pemapar tersuai hilang selepas sel diedit. Ini menimbulkan persoalan: adakah pemapar tidak bermaksud untuk meneruskan pemaparan sel selepas paparan data awal?
Nasib baik, bukan masalah pemapar gagal berfungsi sebagai dijangka. Kuncinya terletak pada memahami proses penyuntingan jadual. Apabila pengeditan berakhir, kaedah editingStopped() jadual mendapatkan semula nilai yang dikemas kini melalui getCellEditorValue() dan menggunakannya untuk setValueAt() dalam model. Ini, seterusnya, mencetuskan fireTableCellUpdated(), menggunakan pemapar yang ditetapkan. Oleh itu, mengatasi pemapar lalai sepatutnya memadai untuk mengekalkan pemformatan nombor.
Dalam kes di mana pelaksanaan memerlukan lebih fleksibiliti, menggunakan contoh pemapar sebagai komponen editor ialah pilihan yang berdaya maju. Berikut ialah contoh:
// ... table.setDefaultRenderer(Double.class, new CurrencyRenderer(nf)); table.setDefaultEditor(Double.class, new CurrencyEditor(nf)); // ... private static class CurrencyEditor extends DefaultCellEditor { // ... @Override public Object getCellEditorValue() { // ... } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { // ... } }
Dengan menggunakan pendekatan ini, pemapar tersuai digunakan untuk memaparkan sel dan memudahkan pengeditannya.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Rendering Sel JTable Tersuai Selepas Pengeditan Sel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!