繁体   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