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) {
}
}