【发布时间】:2021-02-21 16:44:28
【问题描述】:
我想写一个小程序。程序应运行的周期数已定义。用户在 Jtextfield 中插入文本。用户每按一次回车,就计算一个周期,并再次创建相同的 JFrame。重复此过程,直到最大。达到循环次数。程序应创建另一个 Jframe。我试着写了代码,但是程序并没有增加循环次数。
public class oneJFrame extends javax.swing.JFrame {
private int Cycles = 0;
public oneJFrame() {
initComponents();
}
private void clsWinBtnActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose();
}
protected void playerNameFieldActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (Cycles <= 4) {
System.out.println(Cycles );
dispose();
oneJFrame JFrame1 = new oneJFrame();
JFrame1.setVisible(true);
Cycles++;
} else {
anotherJFrame Jframe2 = new anotherJFrame ();
Jframe2.setVisible(true);
}
}
我想我知道我遇到的问题:每次 If 语句为真并且 Jframe 被处理并创建一个新的,int Cycles 设置为 0。如果这是问题,我不知道解决这个问题。是否需要处理 Jframe,或者有没有办法将文本保存在文本字段中,然后重新加载框架?或者还有什么我可以做的吗?
我正在使用 NetBeans GUI Builder。
【问题讨论】:
-
不要继续创建新框架。只需为每个周期刷新框架上显示的数据。然后你可以保留实例变量来跟踪周期数。
-
首先,是什么让您认为需要启动新的 JFrame?你实际上是想通过这样做来完成什么?其次,需要匿名执行一系列新的 JFrame 对象,除非您有一些已知的固定数字,在这种情况下,可以提前命名每个对象,并且仅在必要时进行初始化。在您的情况下,您的第二个 JFrame 始终称为 JFrame2,这意味着您没有制作新的 JFrame,而是替换它们,因为您不断重用相同的名称。最好重新考虑您的方法,因为您选择的方法不会有回报。
-
请使用java命名约定
标签: java swing jframe jtextfield