Grafikanwendung lagt wenn in Jar exportiert

  • Themenstarter Themenstarter User567
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
U

User567

Gast
Ich habe eine Grafikanwendung programmiert. Diese läuft auch so weit so gut, sobald ich aber diese Anwendung exportiere (in ein Jar) und dieses dann starte, Lagt es ziemlich und alles (die Anwendung) ruckelt extrem.

Ist das ein bekanntest Problem?
 
@Wildcard, das kann durch aus sein, doch das merkwürdig ist, dass es direkt im Eclipse gestartet flüssig läuft
 
ich habe eine JComponent
Code:
obj= new JComponent() {
       private static final long serialVersionUID = 1L;

	@Override
			
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
		Graphics2D g2 = (Graphics2D)g;
		// hier feure ich nur ein paar g2 funktionen, wie oval, oder color, nichts besonderes
	}
				
};

und diese ruf ich mit repaint(e) alle 10ms mit Hilfe eines TimerTask auf (habe Bewegungen inkludiert)
 
Ein jar ist aber häufig komprimiert und die Suche über den Classloader dauert länger als im Dateisystem. Ein Fehler wirkt sich also stärker aus.
 
das merkwürdige an der geschichte ist,
an einem Linux rechner, rennt es gleich langsam/schnell (eclipse/jar)

aber auf meinem mac, ist das jar deutlich langsamer als mit eclipse
 
Gut, ich habe gerade alle paint funktionen mit paintComponents ersetzt, und rufe aber trotzdem noch obj.repaint() mit Hilfe eines TimerTasks auf

Leider ruckelts immer noch =/
 
Code:
leinwand = new JComponent() {
			private static final long serialVersionUID = 1L;

			@Override
			protected void paintComponent(Graphics g) {
				// TODO Auto-generated method stub
				super.paintComponent(g);
				
				Graphics2D g2 = (Graphics2D)g;
				g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON );
				g2.setColor(bla bla );
				g2.fillOval(bla bla);
			}
			
		};
		
		spielerleinwand = new JComponent() {
			private static final long serialVersionUID = 1L;
			
			protected void paintComponent(Graphics g) {
				// TODO Auto-generated method stub
				super.paintComponent(g);
				Graphics2D g2 = (Graphics2D)g;
				g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON );

				g2.setColor(bla bla );
				g2.fillOval(bla bla);
				
			}
		};
		
		spielerleinwand.setOpaque(false);
		spielerleinwand.setDoubleBuffered(true);
		spielerleinwand.setSize(size);
		spielerleinwand.setLocation(0, 0);
		
		leinwand.setSize(size);
		leinwand.setDoubleBuffered(true);
		leinwand.setLocation(0, 0);


dann habe ich den TimerTask

Code:
new Timer().schedule(new RepaintTimerTask(), 100, 10);

und dann eben noch den RepaintTimerTask

Code:
public void run() {
	spielfeld.getSpielerleinwand().repaint();
}


ps: ja ich bin User567 😛 mit is der Username nicht mehr eingefallen =)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben