在 for 循环中等待按钮按下?
Waiting for a button press within a for loop?
我不确定如何解决这个问题,但我的代码的目的是循环访问 csv 文件,然后用户搜索某个项目。我使用 CSVReader 通过类型列表的字符串数组读取我的项目,所以这不是问题。
当用户搜索某个项目时,我创建了一个 for 循环来遍历我的 csv 文件的行和列,一旦找到就会输出一些代码。
我想要做的是,一旦找到该项目,它将打开另一个框架,用户将再次通过使用文本字段进行输入。然后按下另一个按钮,然后继续我们在另一个 for 循环中中断的地方,以执行一些进行更改的代码。我只能遍历 for 循环一次,否则行和列值将在这样做两次时翻倍。
这是我的代码:
editTigerFrame obj = new editTigerFrame();
String getLocation = obj.editLocationField.getText();
javax.swing.JButton saveButt = obj.saveEditButton;
try{
String strSearch = searchSerialField.getText();
CSVReader reader = new CSVReader(new FileReader("test.txt"), ',');
List<String[]> myEntries = reader.readAll();
reader.close();
for (int row = 0; row < myEntries.size(); row++)
{
for (int column = 0; column < myEntries.get(row).length; column++)
{
if (myEntries.get(row)[column].trim().equalsIgnoreCase(strSearch))
{
System.out.println("Found - Your item is on row: " + row + ", column: " + column);
//If serial is found, open the editTigerFrame to edit details
new editTigerFrame().setVisible(true);
//Replace with user input
//When button is pressed in other class, execute this code
System.out.println("Saved");
String newLocation = getLocation;
正如您在代码片段底部附近看到的那样,在另一个表单上按下按钮后,执行代码以更改字符串。
有没有办法在 for 循环中暂停和继续?
感谢您的帮助,如果您还需要什么,请告诉我,我会提供。
您可以使用 break;
离开 for 循环。在离开之前记住行、列等,并使用记住的值开始循环。
我认为将 for 循环放入它自己的方法中是个好主意。这同样适用于输入的 "popup" 。然后你可以在需要的时候打电话给他们。 ^^-d
编辑:一些示例代码:
package pauseLoop;
public class pauseLoop {
int rows;
int columns;
int something;
static int[] a;
public static void main(String[] gnarrr){
pauseLoop myLoop = new pauseLoop();
myLoop.Loop();
myLoop.Loop();
}
public pauseLoop(){
this.rows = 0;
this.columns = 0;
this.something = 11; //just random data
}
public void Loop(){
System.out.println("starting loop with: rows = " + rows + " columns = " + columns + " something = " + something);
for(int count = rows; count < 99999 ;count++){
/* do some black magic ;) */
if(count % 23 == 22){ // !condition to pause the loop! i chose something that can occur more than once
this.rows += count; //remember rows
this.columns += 5; // columns got 5 more by some black magic (nested loop or so)
this.something += 31; //just some data needed to be remembered for later
System.out.println("leaving loop with: rows = " + rows + " columns = " + columns + " something = " + something+ "\n");
break; //leave loop!
}
}
}
}
如果运行产生以下输出:
开始循环:行 = 0 列 = 0 某事 = 11
离开循环:行 = 22 列 = 5 某事 = 42
开始循环:行 = 22 列 = 5 某事 = 42
离开循环:行 = 44 列 = 10 某些东西 = 73
编码愉快!
Is there a way to pause and continue within a for-loop?
也许会显示一个 JOptionPane
请求使用输入?
查看有关 How to Make Dialogs 的 Swing 教程部分,了解更多信息和示例。
如果您要收集更复杂的数据,那么您可以使用模态 JDialog
。
我不确定如何解决这个问题,但我的代码的目的是循环访问 csv 文件,然后用户搜索某个项目。我使用 CSVReader 通过类型列表的字符串数组读取我的项目,所以这不是问题。
当用户搜索某个项目时,我创建了一个 for 循环来遍历我的 csv 文件的行和列,一旦找到就会输出一些代码。
我想要做的是,一旦找到该项目,它将打开另一个框架,用户将再次通过使用文本字段进行输入。然后按下另一个按钮,然后继续我们在另一个 for 循环中中断的地方,以执行一些进行更改的代码。我只能遍历 for 循环一次,否则行和列值将在这样做两次时翻倍。
这是我的代码:
editTigerFrame obj = new editTigerFrame();
String getLocation = obj.editLocationField.getText();
javax.swing.JButton saveButt = obj.saveEditButton;
try{
String strSearch = searchSerialField.getText();
CSVReader reader = new CSVReader(new FileReader("test.txt"), ',');
List<String[]> myEntries = reader.readAll();
reader.close();
for (int row = 0; row < myEntries.size(); row++)
{
for (int column = 0; column < myEntries.get(row).length; column++)
{
if (myEntries.get(row)[column].trim().equalsIgnoreCase(strSearch))
{
System.out.println("Found - Your item is on row: " + row + ", column: " + column);
//If serial is found, open the editTigerFrame to edit details
new editTigerFrame().setVisible(true);
//Replace with user input
//When button is pressed in other class, execute this code
System.out.println("Saved");
String newLocation = getLocation;
正如您在代码片段底部附近看到的那样,在另一个表单上按下按钮后,执行代码以更改字符串。
有没有办法在 for 循环中暂停和继续?
感谢您的帮助,如果您还需要什么,请告诉我,我会提供。
您可以使用 break;
离开 for 循环。在离开之前记住行、列等,并使用记住的值开始循环。
我认为将 for 循环放入它自己的方法中是个好主意。这同样适用于输入的 "popup" 。然后你可以在需要的时候打电话给他们。 ^^-d
编辑:一些示例代码:
package pauseLoop;
public class pauseLoop {
int rows;
int columns;
int something;
static int[] a;
public static void main(String[] gnarrr){
pauseLoop myLoop = new pauseLoop();
myLoop.Loop();
myLoop.Loop();
}
public pauseLoop(){
this.rows = 0;
this.columns = 0;
this.something = 11; //just random data
}
public void Loop(){
System.out.println("starting loop with: rows = " + rows + " columns = " + columns + " something = " + something);
for(int count = rows; count < 99999 ;count++){
/* do some black magic ;) */
if(count % 23 == 22){ // !condition to pause the loop! i chose something that can occur more than once
this.rows += count; //remember rows
this.columns += 5; // columns got 5 more by some black magic (nested loop or so)
this.something += 31; //just some data needed to be remembered for later
System.out.println("leaving loop with: rows = " + rows + " columns = " + columns + " something = " + something+ "\n");
break; //leave loop!
}
}
}
}
如果运行产生以下输出:
开始循环:行 = 0 列 = 0 某事 = 11
离开循环:行 = 22 列 = 5 某事 = 42
开始循环:行 = 22 列 = 5 某事 = 42
离开循环:行 = 44 列 = 10 某些东西 = 73
编码愉快!
Is there a way to pause and continue within a for-loop?
也许会显示一个 JOptionPane
请求使用输入?
查看有关 How to Make Dialogs 的 Swing 教程部分,了解更多信息和示例。
如果您要收集更复杂的数据,那么您可以使用模态 JDialog
。