Java 带GUI的扫描仪

Java 带GUI的扫描仪,java,swing,awt,jbutton,Java,Swing,Awt,Jbutton,我想用JavaGUI制作一个使用单字母密码的程序密码。 但是,当我单击按钮进行加密时,textfield2将不会显示结果并使程序崩溃 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Scanner sc = new Scanner(System.in); String en = doEncryption(sc.next().toLowerCase()); jTextField1.se

我想用JavaGUI制作一个使用单字母密码的程序密码。 但是,当我单击按钮进行加密时,
textfield2
将不会显示结果并使程序崩溃

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
   Scanner sc = new Scanner(System.in);
   String en =  doEncryption(sc.next().toLowerCase());
   jTextField1.setT![enter image description here][1]ext(en);
   jTextField2.setText(doDecryption(en));
   sc.close();
} 

不要将事件驱动的GUI与
Scanner sc=新扫描仪(System.in)混合使用。说真的,别这样。这就是GUI的用途,如果不考虑线程,那么程序将变得毫无用处。请理解
sc.next()
是一个阻塞调用,该调用将阻塞当前线程直到其完成,并且在Swing事件线程上进行此调用将阻塞GUI,将其冻结。但是,当您可以通过GUI、一个JTextFields或一个JTextArea(例如)获得用户输入时,为什么还要这样做呢

因此,与此相反:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
   Scanner sc = new Scanner(System.in);
   String en =  doEncryption(sc.next().toLowerCase());
   jTextField1.setText(en);
   jTextField2.setText(doDecryption(en));
   sc.close();
}
考虑做:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
   // Scanner sc = new Scanner(System.in);

   // assuming entryTextArea is a JTextArea for user input:
   String en =  entryTextArea.getText().toLowerCase());
   jTextField1.setText(en);
   jTextField2.setText(doDecryption(en));
   // sc.close();
}

当它“崩溃”时,控制台上是否打印了一些结果或异常堆栈跟踪?请列出所有详细信息、实际异常字符串,注意引发异常的行以及您为扫描仪提供的输入……请提供崩溃的错误消息详细信息/堆栈跟踪