У меня есть что-то вроде этого:Контроллинг порядок функций в Java
final JButton btnGenerate = new JButton("Generate Keys");
btnGenerate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//On click, Generate Keys
toConsole("[RSA] Generating a pair of keys, this can take several minutes...");
GenerateKeys();
toConsole("[RSA] Done");
btnGenerate.setEnabled(false);
btnConnect.setEnabled(true);
}
});
toConsole:
public void toConsole (String s) {
chatArea.append(s + "\n");
}
GenerateKey:
public void GenerateKeys(){
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(4096);
KeyPair keyPair = keyGen.genKeyPair();
publicKey = keyPair.getPublic().getEncoded();
privateKey = keyPair.getPrivate().getEncoded();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
Таким образом, когда пользователь нажимает кнопку, я Я пытаюсь создать пару ключей RSA длиной 4096, но перед этим я хочу добавить в свой TextArea это:
«[RSA] Создание пары ключей, это может занять несколько минут ...»
Когда я запустить программу и нажать на эту кнопку, ничего появиться на TextArea, вместо запуска программы для генерации пара ключей, а затем распечатает текст в TextArea. Что-то не так в моем коде? Сначала я вызвал toConsole(), а затем GenerateKeys() ...
Вероятно, вы все это делаете на EDT, что заморозит ваш графический интерфейс, пока EDT не сможет снова обрабатывать события. Используйте [фоновая задача.] (Https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html) – markspace
Хорошо, я попробую. Просто для любопытства, зачем мне это нужно, даже если команда append находится перед функцией GenerateKey? –
Посмотрите мои комментарии: «заморозит ваш графический интерфейс» – markspace