Java 正在关闭扫描仪,但需要从其他类访问它

Java 正在关闭扫描仪,但需要从其他类访问它,java,java.util.scanner,Java,Java.util.scanner,我的扫描仪有问题。单击按钮,将显示第二个文件中的文本。我让按钮工作,但是程序直接跳到新文本文件的最后一行。由于加载时间慢,我想这是因为我无法关闭第一台扫描仪。我不认为我的布局对事情有多大帮助,因为一次会有很多文本文件读取一个,但是将第二个类作为内部类编写会使事情看起来更加复杂 如何使第一个类可以访问第二个类中的扫描仪(并因此使用reader.close())? 我应该使用嵌套/内部类来启动程序吗? 是否有一种更干净的方法来启动程序,然后为以后的操作启动扫描仪 最后,我一直在努力遵守SSCCE的规

我的扫描仪有问题。单击按钮,将显示第二个文件中的文本。我让按钮工作,但是程序直接跳到新文本文件的最后一行。由于加载时间慢,我想这是因为我无法关闭第一台扫描仪。我不认为我的布局对事情有多大帮助,因为一次会有很多文本文件读取一个,但是将第二个类作为内部类编写会使事情看起来更加复杂

如何使第一个类可以访问第二个类中的扫描仪(并因此使用
reader.close()
)? 我应该使用嵌套/内部类来启动程序吗? 是否有一种更干净的方法来启动程序,然后为以后的操作启动扫描仪

最后,我一直在努力遵守SSCCE的规定,我是否接近了?谢谢你的帮助

import declarations
public class MihatteFrame extends JFrame implements ActionListener{
....
public MihatteFrame() {
    area
    textfield
    button  
}
displayText method
checkTextFieldText method

public void actionPerformed(ActionEvent e) {
    try {
        if (textField.getText().equals("proceed to the entrance")) {
            Scanner.close();
            Scanner reader2 = new Scanner(new File("(Start) Front Gate.txt"));
            while (reader2.hasNextLine()) {
                String line = reader2.nextLine();
                displayText(line);
                try {
                    if(!line.trim().equals("")){
                                Thread.sleep(1000);
                        }
                    } catch (InterruptedException e) {
                    }   
            }
        } else {
            while (textField.getText() == null) {
                displayText("I`m sorry, could you say that again?");
            }
        }
    } catch (IOException ioe) {
    }
}
x


GUI线程仅在您从它调用您的事件返回时执行操作。这意味着如果你做了很多动作,你只会看到这些动作的累积,如果你出于任何原因暂停,你的GUI就会暂停


您需要在另一个线程中执行该操作,以便GUI线程可以更新屏幕。您还需要使用SwingUtils.invokeLater()从第二个线程更新GUI。

我怀疑这甚至不能编译
Scanner.close()
越来越接近SSCCE,但
指出了一个阻止它成为SSCCE的问题区域。尝试本教程:只是想对评论和教程说声谢谢-我仍在阅读和处理它,因此以后可能会有后续qs。
import declarations
class ShowIntro {
public static void main(String args[]) throws IOException {
MihatteFrame mf = new MihatteFrame();
Scanner reader = new Scanner(new File("(Start) Introduction.txt"));

while (reader.hasNextLine()) {
    String line = reader.nextLine();
    mf.displayText(line);
    try {
        if(!line.trim().equals("")){
        Thread.sleep(1000);
            }
    } catch (InterruptedException e) {
    }       
}