[Java] JOptionPane problem z repaint?


(Slawek Master) #1

Witam,

Mam problem na JRE1.5 windows XP

na JRE1.7 , windows 7 dziala poprawnie

Przy próbie wyswietlenia jakiego kolwiek dialogu pojawiaja sie problemy takie jak na zrzutach poniżej

tekst widoczny w TextArea dopiero bo zaznaczeniu tego tekstu, ale i tak nie ma ikonki po lewej stronie tip

texarea.png

Uploaded with ImageShack.us

widoczny jedynie JTextField, dopiero jak recznie zmienie rozmiar okna (wymusze repaint) to sie pojawia button, ale JLabel juz nie

settingsoe.png

Uploaded with ImageShack.us

zwykly JOptionPane.showMessageDialog(...)

messagedialogh.png

Uploaded with ImageShack.us

będe wdzięczny za pomysly, jedyne co znalazlem to bug'i ale nie wiem czy one maja cos wspolnego z moim problemem

ponieważ tworząc prostego JFRame + JButton wywołujący JOptionPane działa poprawnie

http://bugs.sun.com/view_bug.do?bug_id=6859086

http://bugs.sun.com/bugdatabase/view_bu ... id=4139692

dodam jeszcze ze w momencie gdy wyłączę te okna dialogowe to nie odswieza mi sie panel programu :confused: dopiero jak wymusze mu zmiane rozmiaru itp ;/

wszystkie te okna dialogowe są wywoływane w ActionPerformed

pozdrawiam


(Razi) #2

Tak się dzieje, gdy wszystko pakujesz do jednego wątku, zamiast używać SwingUtilities i metod invokeLater.

http://docs.oracle.com/javase/1.5.0/doc ... ities.html

http://www.java2s.com/Code/Java/Threads ... thread.htm


(Slawek Master) #3

wrzucam w sposob jak poniżej

final static public void showManual(){


        javax.swing.SwingUtilities.invokeLater(new Runnable() {


     	   public void run() { 

     			JOptionPane.showMessageDialog(

     					null, 

     					"podręcznik użytkownika\n\n" +

     					"w trakcie rozbudowy będa pojawiały się dodatkowe informacje na temat użytkowania programu",

     					"podręcznik uzytkownika",

     					JOptionPane.INFORMATION_MESSAGE);


     	   }

     	});


	}