[英]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.