schlechte performance bei simplem swing

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
hey,

hab gerade erst anfgefangen mit java etwas grafisch zu machen..

habe nun ein JFrame erstellt, dass ein paar Buttons hat (diese haben Icons).

Was mich nervt ist, dass wenn man das prog startet, man kurz (halbe sekunde oder so) das leere Fenster sieht, und dann poppen erst die Buttons auf.

Das sieht doch *** aus, und vor allen Dingen ist das nur n Mini Fenster (320*240) mit 2 kleinen Buttons.

Wieso ist das so langsam?

Was ich mir gerade denke: Könnte es am bildformat meiner Icons liegen? sie sind in .jpg.
Kann ich evtl. ein anderes Format benutzen, dass bei gleichbleibender Qualität weniger Bytes groß ist?

Okay, aber unabhängig davon:
ich mache window.setvisible(true); erst ganz am Schluss, also nach add.

Wieso erscheint das Fenster dann, obwohl die Buttons noch nicht richtig geladen sind?

Das kann ja nicht sein, dass das alles so extrem langsam geht bei so nem peinlichen programm.
 
import javax.swing.*;
import java.awt.*;
okay, hab jetzt ein paar Sachen geändert, z.B. Grösse, also nicht wundern.
Ist aber noch immer super langsam alles.
PS: die bilder sind noch größer geworden, z.T. über 100 kb, aber eigentlich kann das ja trotzdem nicht so lange dauern, dass man es sieht, oder?

Code:
public class Game{
	
	public static void main(String[] args){
		
		/* create the window */
		JFrame main = new JFrame("SCHAFKOPF 3.0");
		main.setLayout(null);
		main.setSize(1024,768);
		main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		main.setLocation(
        (Toolkit.getDefaultToolkit().getScreenSize().width-
         main.getSize().width) / 2,
        (Toolkit.getDefaultToolkit().getScreenSize().height-
         main.getSize().height) / 2); 
		
		/* create buttons */
		AbstractButton startGame = new JButton();
		startGame.setIcon(new ImageIcon( "icon/startGame.jpg" ));
		startGame.setBounds(20,80,420,220);
		
		AbstractButton showStats = new JButton();
		showStats.setIcon(new ImageIcon( "icon/showStats.jpg" ));
		showStats.setBounds(20,320,420,220);
		
		AbstractButton exit = new JButton();
		exit.setIcon(new ImageIcon( "icon/exit.jpg" ));
		exit.setBounds(946,680,50,50);
		
		/* create button rollover help text */
		
		
		/* add and display */
		main.add(startGame);
		main.add(showStats);
		main.add(exit);
		main.setVisible(true);
	}
}
 
hm.. die demo scheint nicht zu gehen, ich brauch noch ein package was da nicht dabei ist.

aber ich meine dann liegt es ja doch am code, oder nicht?

was sind denn z.B. 2 der 1000 gründe? meinst du jetzt damit, dass es mit meinem system zusammenhängt?

weil wenn es am code liegt, soviel ist es ja nicht. das müsste man ja rauskriegen oder?
 
ich bekomme wie gesagt die Fehlermeldung beim kompilieren, dass das package ("demo") nicht verfügbar ist.
Und es gibt im Zip-File auch keinen Ordner, der so heisst, sondern lediglich eine .java und .class Datei sowie einen Ordner mit zwei Icons.

Was ich aber gesehen habe: Die verwenden .png dateien für die icons, die sind nur 1kb groß.
Allerdings sind die auch sehr klein.

Kann ich sowas in JAva dann aufskalieren?

Wobei ich noch immer nicht glauben kann, dass 100kb so lange zum laden brauchen.
 
Anonymous hat gesagt.:
..dass das package ("demo") nicht verfügbar ist..
In der jar Datei ist ein Ordner demo drin.
In demo sind die java und class Dateien und der Ordner icons mit den Bildern.
Du kannst die jar auch direkt ausführen.
 
Kann ich sowas in JAva dann aufskalieren?

Ja kannst du es ist aber nicht besonders gut für deine Performance , da dann bei jedem start zuerst die Icons neu skaliert werden müssen. Es macht mehr Sinn und ist besser für die Performance , wenn du sie so speicherst wie du sie brauchst und die Icons dann nur noch angezeigt werden müssen. Außerdem sind Bildbearbeitungsprogramme beim skalieren besser wie Java.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben