0

我有一个 jFrame 女巫包含两个面板右面板和左面板。(两者都是拆分面板的一部分)

右面板有卡片布局。

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

在左侧面板中,有 2 个按钮(添加、删除)。

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

当我按下 ADD 按钮时,LeftPanel 中会显示一个新面板(AddPanel)。

 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 还具有各种文本字段,可以从数据库中检索所有这些值,并且有三个按钮:- 下一个、上一个、删除。

用户可以浏览 mysql 记录,向上和向下,使用下一个,上一个按钮以及通过按下 REMOVE 按钮删除记录,并且在运行时它只会被更新,即删除的记录不会再次显示,因为我再次在 REMOVE 按钮处调用 SELECT 语句调用 DELETEPanel。这一切都在起作用。

当我再次单击添加按钮、提交新记录并现在尝试通过按 JFRAME 左侧面板中的删除按钮来查看记录时出现问题。

我是如何做到的,所以每次我按下“DELETE”按钮(从 jFrame 的左侧面板)时,都会再次创建 DeletePanel,以便它从数据库中获取更新的结果。

我面临的问题是因为之前调用了删除按钮,因此之前创建了删除面板,因此它保持其旧状态。如何重新初始化删除面板。我没有从数据库中获得新的更新记录。仅当我再次重新启动应用程序时才有效。
请帮忙。

4

1 回答 1

0

最终找到答案并在此处发布响应答案是使用组件侦听器在每次查看面板时重新初始化面板.....

公共类 DeletePanel 实现 ComponentListener

然后为了将面板(即 DELETEPANEL)添加到我的问题中需要的侦听器,请使用此行。

this.addComponentListner(this); // 在删除面板构造函数中。

然后定义重写的 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%

于 2013-07-14T18:49:27.547 回答