J'ai quelques milliers de lignes de code quelque part et je l'ai remarqué que mon JTextPane vacille quand je le mettre à jour trop .. je l'ai écrit une version simplifiée ici:vacillante de composant Swing lorsque mis à jour beaucoup
import java.awt.*;
import javax.swing.*;
public class Test
{
static JFrame f;
static JTextPane a;
static final String NL = "\n";
public static void main(String... args)
{
EventQueue.invokeLater(new Runnable(){
public void run()
{
f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setSize(400, 300);
f.setLocationRelativeTo(null);
a = new JTextPane();
f.add(new JScrollPane(a));
new Thread(new Runnable(){
public void run()
{
int i = 0;
StringBuffer b = new StringBuffer();
while(true)
{
b.append(++i+NL);
a.setText(b.toString());
a.setCaretPosition(b.length());
try{Thread.sleep(10);}catch(Exception e){}
}
}
}).start();
}
});
}
}
Ceci est pour une interface graphique de style terminal (cmd) component--
Je pense que je l'ai fait toutes les optimisations que je pouvais ici, y compris avoir \n
comme une variable finale, donc il ne sera pas construit des centaines de fois. Cependant, le scintillement est perceptible et inacceptable. Après quelques minutes, le composant se fige complètement. Je dois mettre à jour le composant très rapidement, et le volet doit être déplacé vers le bas lorsqu'il est mis à jour.
Je pensais créer ma propre version de JTextPane à partir de zéro, mais j'aimerais voir si vous avez une solution plus simple.
Pourquoi l'accent curieux sur le mot "experts"? Pensiez-vous que vous obtiendriez une meilleure réponse en nous insultant? –
Désolé, aucune infraction prévue. Édité. – Bai