首頁 > Java > java教程 > 主體

為什麼我的 GUI 顯示不一致?

DDD
發布: 2024-11-12 10:33:01
原創
357 人瀏覽過

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

AbstractTableModel GUI 顯示問題

在提供的使用AbstractTableModel 建立GUI 的Java 程式碼中,存在一些與顯示和顯示相關的問題第二個GUI 視窗(Gui2 類別)的功能。

第一期: GUI 外觀不一致

您提到Gui2 視窗以兩種不同的方式顯示,一種帶有空面板,另一種帶有表格和按鈕。這種不一致的行為通常是由於 GUI 元件的初始化或顯示不正確所造成的。

在 Gui2 類別的建構子中,建立了面板,並定義了佈局和約束,但元件(文字欄位、按鈕和表格)未新增至面板。要解決此問題,您需要使用 add() 方法或呼叫每種元件類型的特定方法將元件新增至面板。

第二個問題:刪除後表更新

「刪除選定行」按鈕的ActionListener 會觸發刪除查詢並顯示成功訊息,但表不會自動更新以反映刪除。這個問題與表模型的更新方式有關。

當您從資料庫中刪除一行時,您需要更新底層表模型以從資料結構中刪除刪除的行。 AbstractTableModel 專門為此目的提供了一個名為 fireTableRowsDeleted() 的方法。

要解決此問題,您應該在刪除按鈕的 ActionListener 中成功刪除後新增一行來呼叫 fireTableRowsDeleted()。這將通知 JTable 資料已更改,並將相應地更新顯示。

其他注意事項:

  • SwingWorker 類別用於擷取後台從 ResultSet 取得行,優化大資料集的顯示。
  • JDBCWorker 類,嵌套在 JDBCModel 中,處理 SwingWorker 中的行並使用publish() 和 process() 方法更新表模型。
  • 使用 ResultSetMetaData 擷取行元資料以決定列數和列名稱。
  • 重寫 getPreferredScrollableViewportSize() 方法以自訂封閉的大小JScrollPane。
  • SwingWorker 的進度屬性用於在資料檢索期間顯示進度。

以上是為什麼我的 GUI 顯示不一致?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板