OnStateChange() и displayMessage() выполняются в разных потоках.
Код: Выделить всё
public void OnStateChange(AccSession arg0, AccSessionState arg1, AccResult arg2) {
form.setConnectionStatus( arg1.toString() ); // setConnectionStatus() sets a text on a label to Online/Offline.
if( arg1 == AccSessionState.Offline ) {
running = false;
if( arg2 == AccResult.ACC_E_FAIL ){
form.displayMessage( "*** Wrong Password ***" );
}
if( arg2 == AccResult.ACC_E_INVALID_KEY ) {
form.displayMessage( "*** Bad Client Key ***" ); // just adds a message to messageTextPane.
}
if( arg2 == AccResult.ACC_E_RATE_LIMITED ) {
form.displayMessage( "*** Rate Limited ***" );
}
if( arg2 == AccResult.ACC_E_RATE_LIMITED_KEY ) {
form.displayMessage( "*** Key Rate Limited ***" );
}
form.displayMessage( "*** Signed Out ***" );
form.setLogedIn( false );
}
if( arg1 == AccSessionState.Online ) {
form.displayMessage( "*** Signed In ***" );
form.setLogedIn( true );
}
}Код: Выделить всё
public void displayMessage( String message ){
StyledDocument chatDoc = chatTextPane.getStyledDocument();
try{
chatDoc.insertString( chatDoc.getLength(), message + '\n', null );
}
catch( BadLocationException e ){
System.err.println( "EXCEPTION: Couldn't insert the message \"" + message + "\" into the chat window: " + e.getMessage() );
}
}