Olamagato napisał(a)
Metoda ta powoduje, że kod, który jest umieszczony w metodzie run (...)
Czyli rozumie, że jak sobie zrobię:
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new JFrame();
frame.setContentPane( new CoolPanel() );
frame.setVisible(true);
}
}
to w CoolPanel'u nie muszę znowu wywoływać EventQueue.invokeLater'a, (nie używam SwinkWorker).,
bo to i tak się w tym wątku Swinga wykona....
Zacząłem się nad tym zastanawiać, bo w moim projekcie właśnie tworzę frame'a w metodzie run wątku Swinga (przez invokeLater), nataomiast problem pojawia się gdy tworzę:
final JSplitPane middleSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, p1, p2);
middleSplit.setDividerLocation(0.5);
gdzieś w kolejnych panelach... i nie ustawia mi tego 50% podziału... więc po chwili zastanowienia zrobiłem EventQueue.invokeLater'a... i działa :)
tylko, że to nie ma sensu, bo wszystko wywołuje się i tak w wątku Swinga, chyba że się mylę :)
...czytałem też, że wiele osób robi to w ten sposób lub w inny podobny, może lepszy... Polega on na tym, żeby wywołać validate() na frameu (tylko, że w tej klasie nie mam dostępu do freamea, a żeby go tam przekazać... to ohoho długa droga i zabawa... :( a validate na middleSplit, ani też na panelu go zawierającym, nic nie daje :( ]
P.S. wielkie dzięki ;) za rzeczowe wyjaśnienie poprzedniego wątku
i liczę na miłe wyjaśnienie ;)...
Pozdrawiam