Rumah >Java >javaTutorial >Mengapa Paparan GUI Saya Tidak Konsisten dan Bagaimana Saya Boleh Mengemas kini Jadual Selepas Pemadaman?

Mengapa Paparan GUI Saya Tidak Konsisten dan Bagaimana Saya Boleh Mengemas kini Jadual Selepas Pemadaman?

DDD
DDDasal
2024-11-12 10:33:01418semak imbas

Why is My GUI Display Inconsistent and How Can I Update the Table After Deletion?

Isu paparan GUI AbstractTableModel

Dalam kod Java yang disediakan untuk mencipta GUI menggunakan AbstractTableModel, terdapat beberapa isu yang berkaitan dengan paparan dan kefungsian tetingkap GUI kedua (kelas Gui2).

Isu Pertama: Penampilan GUI tidak konsisten

Anda menyebut bahawa tetingkap Gui2 muncul dalam dua cara berbeza, satu dengan panel kosong dan satu lagi dengan meja dan butang. Tingkah laku tidak konsisten ini biasanya disebabkan oleh pengamulaan atau paparan komponen GUI yang salah.

Dalam pembina kelas Gui2, panel dibuat dan reka letak dan kekangan ditakrifkan, tetapi komponen (medan teks, butang, dan jadual) tidak ditambahkan pada panel. Untuk membetulkannya, anda perlu menambah komponen pada panel menggunakan kaedah add() atau dengan memanggil kaedah khusus untuk setiap jenis komponen.

Isu Kedua: Kemas kini jadual selepas pemadaman

ActionListener untuk butang "Padam Baris Terpilih" mencetuskan pertanyaan pemadaman dan memaparkan mesej kejayaan, tetapi jadual tidak dikemas kini secara automatik untuk menggambarkan pemadaman. Isu ini berkaitan dengan cara model jadual dikemas kini.

Apabila anda memadamkan baris daripada pangkalan data, anda perlu mengemas kini model jadual asas untuk mengalih keluar baris yang dipadamkan daripada struktur data. AbstractTableModel menyediakan kaedah yang dipanggil fireTableRowsDeleted() khusus untuk tujuan ini.

Untuk menyelesaikan isu ini, anda harus menambah baris selepas pemadaman berjaya dalam ActionListener butang padam untuk memanggil fireTableRowsDeleted(). Ini akan memberitahu JTable bahawa data telah berubah dan ia akan mengemas kini paparan sewajarnya.

Pertimbangan Tambahan:

  • Kelas SwingWorker digunakan untuk mendapatkan semula baris daripada ResultSet di latar belakang, mengoptimumkan paparan set data yang besar.
  • Kelas JDBCWorker, bersarang dalam JDBCModel, memproses baris dalam SwingWorker dan mengemas kini model jadual menggunakan kaedah publish() dan process() .
  • Metadata baris diekstrak menggunakan ResultSetMetaData untuk menentukan bilangan lajur dan nama lajur.
  • Kaedah getPreferredScrollableViewportSize() ditindih untuk menyesuaikan saiz JScrollPane yang disertakan.
  • Harta kemajuan SwingWorker digunakan untuk memaparkan kemajuan semasa pengambilan data.

Atas ialah kandungan terperinci Mengapa Paparan GUI Saya Tidak Konsisten dan Bagaimana Saya Boleh Mengemas kini Jadual Selepas Pemadaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn