Nazdar.Vytvoril som si aplikáciu v java swingu a mam taký problém , že pri spustení cez jar file a vlastne niekedy aj pri spustení cez netbeans zmiznú všetky tlačítka , ale pri opätovnom spustení je všetko v poriadku.Čo môže byť problém ?
Fórum › Java
Problém pri spuštaní
Ta tlačítka se vůbec nezobrazí nebo se nejdříve zobrazí a pak zase zmizí?
Napadají mě jen tři věci:
- problém s vlákny - celé GUI má být ovládáno z AWT event-dispatch threadu
- problém ve spolupráci JVM a OS/ovladače grafické karty
- problém s umístěmí tlačítek v okně (jakým způsobem je jejich pozice určena?)
#3 DeniLeet
Můžete to okno/formulář zjednodušit úplně na kost (tj. vyházet nepotřebné věci, aby zbyla jen definice rozložení prvků) a vyzkoušet? Jestli to ani tak nepomůže, tak sem zkuste dát ten zjednodušený zdroják (díky tomu zjednodušení měl by být krátký).
#4 Mips
JFrame frame = new JFrame("DLGame");
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
frame.setLayout(new GridLayout(25,18));
final JButton[][] button = new JButton[25][18];
for(int i=0;i<25;i++){
for(int j=0;j<18;j++){
button[i][j] = new JButton(clickstart);
}
}
for(int i=0;i<25;i++){
for(int j=0;j<18;j++){
frame.add(button[i][j]);
}
}
Sranda je to , že po spustení debuggerom to funguje
#5 DeniLeet
Když se aplikace spustí pod debuggerem, změní se oproti běhu bez debuggeru mimo jiné tyto věci:
- nastavení JVM (optimalizace, ...)
- časování - tj. mohou se projevit či naopak skrýt chyby v práci s vlákny
Pro začátek bych zkusil spustit tu aplikaci mimo debugovací režim, ale s přepínačem -J-Dsun.java2d.noddraw=true. Ten způsobí, že JVM nebude pro vykreslování používat DirectDraw (ve Windows).
Co se týká toho zdrojáku: Už je to asi 5 let, co jsem ve Swingu naposledy programoval, ale vybavuji si, že komponenty se nedávaly přímo do Frame, ale do jeho content-pane. Tedy místo frame.add(button) se psalo frame.getContentPane().add(button). Případně se vytvořil JPanel a ten se potom nastavil jako content-pane toho Frame (frame.setContentPane(panel)). To platí i pro layout - tedy layout by se neměl nastavovat přímo na Frame, ale na jeho content-panel.
A ještě jedna věc: Ten Frame bych zobrazoval (setVisible(...)) až poté, co je kompletně nastavený.
A ještě připomenutí: Celý ten váš kód by měl běžet ve vlákně pro zpracování událostí (AWT-event-queue thread?).
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Problem v spustani programu — založil
Problem pri prekladu — založil Erik
Problem pri kompilacii — založil Tayson
Problém při spojení s DB — založil TomasUL
Problém při dělení — založil Jan Svatoň
Moderátoři diskuze