簡體   English   中英

每次在JFrame中單擊任何按鈕時,刷新/重新創建卡布局中的所有面板。

[英]Refresh/Recreate All Panel in a Card Layout each time any button is clicked in JFrame Holding these Panels

我有一個jFrame女巫,其中包含兩個面板的右面板和左面板。(兩者都是拆分面板的一部分)

右面板具有卡布局。

p1=new AddPanel();
p2=new DeletePanel();
c2=new CardLayout(); 
right.setLayout(c2);
right.add(p1,"Add");
right.add(p2,"Delete");

在左側面板中,有2個按鈕(ADD,DELETE)。

left.add(new JButton("Add");
left.add(new JButton("DELETE");

當我按下ADD按鈕時,新面板(AddPanel)將顯示在LeftPanel中。

 private void addActionPerformed(java.awt.event.ActionEvent evt) {                                    
   c2.show(right,"Add");

} 

AddPanel具有各種文本字段,該值將值寫入數據庫。

當我按DELETE按鈕時-一個新面板(DeletePanel)將顯示在LeftPanel中。

private void deleteActionPerformed(java.awt.event.ActionEvent evt) {                                     
   c2.show(right,"Delete");
}                                    

DeletePanel還具有各種文本字段,這些文本字段將從數據庫中檢索所有這些值,並且具有三個按鈕:-next(上一個),previous(上一個),remove(刪除)。

用戶可以使用下一個,上一個按鈕在mysql記錄中上下導航,也可以通過按REMOVE按鈕刪除記錄,並且在運行時僅更新記錄,即刪除的記錄不再顯示,因為我再次在REMOVE按鈕處調用SELECT語句呼叫DELETEPanel。 這一切都在起作用。

當我再次單擊添加按鈕,提交新記錄並現在嘗試通過按JFRAME的左面板中的DELETE按鈕來查看記錄時,就會出現問題。

我如何做到這一點,所以每當我按下“刪除”按鈕(從jFrame的左面板)時,都會再次創建DeletePanel,以便它從數據庫中獲取更新結果。

我面臨的問題是因為DELETE Button之前被調用過,因此DELETE PANEL是在之前創建的,因此它保持其OLD STATE。 如何重新初始化刪除面板。 我沒有從數據庫獲取新的更新記錄。 僅在我再次重新啟動應用程序時有效。
請幫忙。

最后找到答案並在此處發布響應每次查看該面板時,答案是使用COMPONENT LISTENER重新初始化面板.....

公共類DeletePanel實現ComponentListener

然后為了將面板(即DELETEPANEL)添加到偵聽器,我需要在我的問題中使用此行。

this.addComponentListner(this); //在deletepanel構造函數中。

然后定義重寫的Component Shown方法來初始化事物。 EX-就像我的選擇語句一樣。

@Override
public void componentShown(ComponentEvent e) {
     try {
        Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/online", "root","");
        st = con.prepareStatement("select question,op1,op2,op3,op4 from java");
        rs = st.executeQuery();
    } catch (ClassNotFoundException | SQLException ex) {
  }
}

這有效100%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM