Java 在for循环中等待按钮按下?
我不知道该如何解决这个问题,但我的代码的目的是遍历csv文件,用户搜索某个项目。我用CSVReader通过类型为list的字符串数组读取我的项,所以这不是问题 当用户搜索一个项目时,我创建了一个for循环来迭代我的csv文件的行和列,一旦找到,就会输出一些代码 我想做的是,一旦找到项目,它将打开另一个框架,用户将再次通过使用文本字段进行输入。然后按下另一个按钮,继续我们在另一个for循环中停止的地方,以便执行一些进行更改的代码。我只能在for循环中迭代一次,否则行和列的值将在迭代两次后加倍 这是我的密码:Java 在for循环中等待按钮按下?,java,swing,csv,for-loop,pause,Java,Swing,Csv,For Loop,Pause,我不知道该如何解决这个问题,但我的代码的目的是遍历csv文件,用户搜索某个项目。我用CSVReader通过类型为list的字符串数组读取我的项,所以这不是问题 当用户搜索一个项目时,我创建了一个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;
editTigerFrame obj=新的editTigerFrame();
字符串getLocation=obj.editLocationField.getText();
javax.swing.JButton saveButt=obj.saveEditButton;
试一试{
String strearch=searchSerialField.getText();
CSVReader reader=newcsvreader(newfilereader(“test.txt”),',';
List myEntries=reader.readAll();
reader.close();
对于(int row=0;row
正如您在代码段底部附近看到的,一旦按下另一个表单上的按钮,就可以执行代码来更改字符串
有没有办法在for循环中暂停并继续
谢谢您的帮助,如果您还需要什么,请告诉我,我会提供。您可以使用
中断;
离开for循环。离开前记住行、列等,并使用记住的值启动循环
我认为将for循环放入自己的方法中是一个好主意。输入的“弹出窗口”也是如此。然后,您可以在必要时调用它们。^^-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!
}
}
}
}
package-pauseLoop;
公共类pauseLoop{
int行;
int列;
智力的东西;
静态int[]a;
公共静态void main(字符串[]gnarrr){
pauseLoop myLoop=新的pauseLoop();
myLoop.Loop();
myLoop.Loop();
}
公共pauseLoop(){
这是0.rows=0;
此参数为0;
this.something=11;//只是随机数据
}
公共void循环(){
System.out.println(“开始循环:行=“+rows+”列=“+columns+”something=“+something”);
用于(整数计数=行;计数<99999;计数++){
/*做一些黑魔法;)*/
如果(计数%23==22){//!暂停循环的条件!我选择了可以发生多次的内容
this.rows+=count;//记住行
this.columns+=5;//通过某种黑魔法(嵌套循环左右)又得到了5个列
this.something+=31;//只是需要记住一些数据以便以后使用
System.out.println(“使用以下内容离开循环:rows=“+rows+”columns=“+columns+”something=“+something+”\n”);
break;//离开循环!
}
}
}
}
如果运行,则产生以下输出:
开始循环:行=0列=0某物=11
离开循环:行=22列=5某物=42
开始循环:行=22列=5行=42
离开循环:行=44列=10某物=73
快乐编码
有没有办法在for循环中暂停并继续
可能会显示一个JOptionPane
请求使用输入
有关更多信息和示例,请查看上的Swing教程部分
如果您要收集更复杂的数据,则可以使用模式
JDialog
一旦对话框打开并要求用户输入,我仍然需要暂停for循环,否则代码将继续,就像我没有在文本字段中输入任何内容一样。@juiceb0xk,是,当JOptionPane/JDialog可见且我将在对话框关闭后立即重新启动。因此,在继续循环之前,您需要在对话框关闭时获取数据并对其进行处理。如何使用记住的值重新启动循环?@juiceb0xk调整代码,以便循环真正恢复为“行”-原则保持不变^^^^对于循环和按钮单击使用通用的标志可以很方便。更新按钮单击处理程序上的标志
,并在最内部的循环中使用相同的标志
,在其中你想要中断
。使用新的线程
将使其有效。