0

Почему это когда я пользователь Timer.util JLabel не будет привязываться к моей строке, которую я вставил в свою JTextPane? Но когда я использую Timer, это Allign. Мне нужна Timer.util для моей базы данных, поэтому она не будет отставать.Timer util wont добавить новую строку для JLabel

Вот изображение, когда я использую таймер ударов

enter image description here

Timer t2 = new Timer(250,new ActionListener(){ 

     public void actionPerformed(ActionEvent arg0) { 

      fetchMessageData2(); 
     } 
    }); 
    t2.start(); 


public static void fetchMessage(JTextPane jtep,StyledDocument sd,int count ) 
{ 

    try{ 

    String query = "SELECT members.username, message FROM chat JOIN members ON chat.user_id = members.id WHERE message_id > "+count+""; 
    rs = st.executeQuery(query); 
    while(rs.next()) 
    { 

     try { 
      final JLabel jp = new JLabel(rs.getString("username")+ "\n"); 
      jp.setAlignmentY(0.75f); 
      jp.setFont(new Font("arial",Font.BOLD,16)); 
      jtep.insertComponent(jp); 
      sd.insertString(sd.getLength(), ": "+rs.getString("message")+ "\n", MainPanel.sas); 
     } catch (BadLocationException e1) { 

      e1.printStackTrace(); 
     } 


     MainPanel.count++;} 

    }catch(Exception ex){System.out.print(ex);} 

} 

Вот результат изображения с использованием Timer.util

enter image description here

Timer t = new Timer(); 
    t.schedule(new runnableMethods(), 0,500); 

import java.util.TimerTask; 


public class runnableMethods extends TimerTask{ 

@Override 
public void run() { 

    SubPanel1.checkOfflineOnline(); 
} 
} 

ответ

3

Дон» t использовать java.util.Timer в событии Swing event dispa tch thread, EDT, поскольку он не является потокобезопасным для использования с Swing. Либо используйте javax.swing.Timer, либо если вы должны использовать java.util.Timer, используйте его в фоновом потоке и убедитесь, что вы вызываете вызовы Swing только на EDT. SwingWorker будет хорошо работать для этого.

+0

Что мне делать в backGround, потому что он по-прежнему отстает от атак из-за вызова базы данных. BTW Я использую swing работников сейчас, но он не работал, если я должен разделить вызов mysql? –

 Смежные вопросы

  • Нет связанных вопросов^_^