2015-05-06 7 views
-1

Я хочу сделать программный шифр, используя моноамбетический шифр с графическим интерфейсом java. Но когда я нажимаю кнопку для шифрования, 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(); 
} 
+1

Когда он "падает" делает какой-то результат или исключение StackTrace печатается на консоли? –

+1

Прочтите всю информацию, пожалуйста, фактическую строку исключения, отметив строку, на которую наложено исключение, и ввод, который вы вводите для сканера ..... – chancea

+1

Просьба предоставить информацию об ошибке/трассировку трассировки из аварии – dmeehan

ответ

1

Не смешивайте управляемые событиями графические интерфейсы с Scanner sc = new Scanner(System.in);. Серьезно, просто не делайте этого. Для этого нужен графический интерфейс, и без учета потоковой передачи ваша программа будет бесполезной. Поймите, что sc.next() - это блокирующий вызов, который блокирует текущий поток до его завершения, и что этот вызов в потоке событий Swing блокирует 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(); 
} 
Смежные вопросы