Добрый деньJFrame замораживает После кнопки Click, должен быть насильственная Отменено
Я еще в школе изучения программирования на Java, и есть проект, я работаю. Все работает нормально, однако одна функция моей программы, которая позволяет пользователю изменять свои учетные данные, больше не функционирует должным образом. Я ничего не помню, чтобы что-то менять, и все было хорошо.
Проблема возникает, когда я нажимаю кнопку «Применить» у меня есть, которая выполняет SQL-запрос, чтобы изменить значения поля имени пользователя и пароля в базе данных. JFrame замерзает, и я вынужден принудительно завершить его с помощью WTM. Также следует отметить, что в консоли, я получаю сообщение в красном поговорке:
Java Результат: -805306369
Он имеет то же самое значение каждый раз. Я сделал несколько Googling, и все, что я нашел, это то, что проблемы, подобные замораживанию, вызваны ошибками цикла, но, насколько мне известно, у меня нет этой части кода.
Если бы кто-нибудь мог мне помочь, я был бы так благодарен! Вытащить мои волосы.
Ниже приведен мой код для кнопки «Применить», а также SQL-запрос.
private void btnApplyActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (txtNewUsername.equals("")) {
labelFlagUsername.setVisible(false);
JOptionPane.showMessageDialog(this, "You Need To Fill In The New Username Field", null, JOptionPane.ERROR_MESSAGE);
System.out.println("You Need To Fill In The New Username Field");
} else if (txtNewPassword.equals("")) {
labelFlagPassword.setVisible(false);
JOptionPane.showMessageDialog(this, "You Need To Fill In The New Password Field", null, JOptionPane.ERROR_MESSAGE);
System.out.println("You Need To Fill In The New Password Field");
} else {
UN = txtNewUsername.getText();//Gets value that user entered into field
PW = txtNewPassword.getText();//Gets value that user entered into field
DM.editLoginDetails(UN, PW);//Executes SQL query editLoginDetails
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(this, e.getMessage(), null, JOptionPane.ERROR_MESSAGE);
System.out.println(e.getMessage());
}
txtCurrentUsername.setText(" " + DM.getUsername(UN));
txtCurrentPassword.setText(" " + DM.getPassword(PW));
String temp = "";
txtNewPassword.setText(temp);
txtNewUsername.setText(temp);
}
SQL запросов:
public String editLoginDetails(String UN, String PW)
{
try {
Statement st = con.createStatement();
String query = "UPDATE Users SET Username = '" + UN + "',Password = '" + PW + "';";
st.execute(query);
ResultSet rs = st.getResultSet();
JOptionPane.showMessageDialog(null, "Your login details were changed successfully!");
System.out.println("Your login details were changed successfully!");
catch (Exception e)
{
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println(e.getMessage());
}
return "Your login details were changed successfully!";
}
Наконец, я подумал, что было бы полезно знать, что это JFrame выглядел. Надеюсь, вы поймете, почему мой код так и есть.
Я надеюсь, что кто-то может мне помочь! Отчаянно пытаюсь исправить эту неприятную проблему.
1) Не блокируйте EDT (Thread Dispatch Thread) - графический интерфейс «замораживается», когда это произойдет. Вместо вызова 'Thread.sleep (n)' реализовать Swing 'Timer' для повторения задач или' SwingWorker' для длительных задач. Подробнее см. [Параллелизм в Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/). 2) * «С уважением, Брэндон» * Шум, оставьте это. –
Возможный дубликат [Программа чата зависает JFrame] (http://stackoverflow.com/questions/16718198/chat-program-freezes-jframe) или [этот] (http://stackoverflow.com/q/17627104/418556) или [этот] (http://stackoverflow.com/q/14305747/418556) (сам дубликат [этого] (http://stackoverflow.com/q/14271902/418556)) .. –
* «... полезно знать, как выглядел этот JFrame. Вы лучше поймете, почему мой код такой, какой он есть, надеюсь». * На самом деле все, что я заметил до того, как я прокомментировал, было первым двумя словами названия (JFrame зависает ..) и тег SQL. Этого достаточно, чтобы определить вероятного виновника здесь. –