Java 带GUI的扫描仪
我想用JavaGUI制作一个使用单字母密码的程序密码。 但是,当我单击按钮进行加密时,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
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();
}
当它“崩溃”时,控制台上是否打印了一些结果或异常堆栈跟踪?请列出所有详细信息、实际异常字符串,注意引发异常的行以及您为扫描仪提供的输入……请提供崩溃的错误消息详细信息/堆栈跟踪