Имам няколко хиляди реда код някъде и забелязах, че моят JTextPane трепти, когато го актуализирам твърде много.. Написах опростена версия тук:
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();
}
});
}
}
Това е за GUI компонент в стил терминал (cmd)--
Мисля, че направих всички оптимизации, които можех тук, включително \n
като крайна променлива, така че да не се конструира стотици пъти. Все пак трептенето е забележимо и неприемливо. След няколко минути компонентът замръзва напълно. Трябва да актуализирам компонента много бързо и панелът трябва да се превърти до дъното, когато се актуализира.
Мислех да направя своя собствена версия на JTextPane от нулата, но бих искал да видя дали вие имате по-лесно решение.