gpt4 book ai didi

java - 每次在持有这些面板的 JFrame 中单击任何按钮时,刷新/重新创建卡片布局中的所有面板

转载 作者:行者123 更新时间:2023-11-30 01:29:26 24 4
gpt4 key购买 nike

我有一个 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");

当我按下“添加”按钮时,一个新面板(AddPanel)会显示在“LeftPanel”中。

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

}

AddPanel 有各种文本字段,并将值写入数据库。

当我按下“删除”按钮时 - 左面板中会显示一个新面板(DeletePanel)。

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

DeletePanel 还具有各种文本字段,可从数据库中删除所有这些值,并且有三个按钮:-下一个,上一个,删除。

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

当我再次单击“添加”按钮,提交新记录,然后尝试按 JFRAME 左侧面板中的“删除”按钮查看记录时,出现问题。

我该如何做到这一点,以便每次我按“删除”按钮(从 jFrame 的左侧面板)时,DeletePanel 都会再次创建,以便它从数据库获取更新的结果。

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

最佳答案

终于找到答案并在这里发布回复答案是使用组件监听器在每次查看面板时重新初始化面板......

公共(public)类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%有效

关于java - 每次在持有这些面板的 JFrame 中单击任何按钮时,刷新/重新创建卡片布局中的所有面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com