Grafikproblem beim ausführen einer JAR

Arp

Mitglied
Hi!

Ich hab grade ein Programm geschrieben das unter anderem ein ein JFrame erzeugt und darauf unter anderem ein JPanel erzeugt auf dem ein paar Pixel mittels g.drawrect(...) gezeichnet werden.
Nun hab ich ein komisches problem.

Wenn ich das Programm aus Eclipse heraus starte, ohne das irgendwelche parameter gesetzt sind, funktioniert alles tadellos. Exportier ich das nun als jar und starte die jar direkt, funktioniert alles super, nur die Pixel werden nicht dargestellt.

noch komischer: starte ich das in der kommandozeile mittels java -jar datei.jar werden sie wieder dargestellt....

Wisst ihr zufällig woran das liegt?
 

Murray

Top Contributor
Der Doppelklick ruft (wenn man nach der Java-Installation nicht für Jar-Files etwas anderes definiert hat) javaw auf. Insofern unterscheidet sich der Aufruf javaw -jar datei.jar vom Doppleklick nur durch das Arbeitsverzeichnis.

Ich tippe mal: wenn Du in irgendein anderes Verzeichnis wechselst als das, in dem das jar-File liegt, dann funktioniert auch java -jar <absoluter Pfad des Verzeichnisses, in dem datei.jar liegt>\datei.jar nicht mehr?

Ich tippe weiter: a) in Deinem Code wird irgendwo eine externe Datei referenziert, was nur dann klappt. wenn das Arbeitsverzeichnis passend gesetzt ist. b) sollte die externe Datei nicht gefunden werden, dann bricht die Anwendung einfach ab, weil die deshalb geworfene Exception nicht behandelt wird
 

Arp

Mitglied
Ok, ich hab die Möglichkeiten ausprobiert:

java -jar im selben Verzeichnis wie die Jar = pixel
javaw- jar im selben Verzeichnis wie die Jar = pixel
java -jar woanders mit absolutem pfad = pixel
javaw -jar woanders mit absolutem pfad = pixel

doppelklick = keine pixel

Eine Exception kann es eigentlich nicht sein, da ich alle abgefangen hab. Und wenn es eine nicht abgefangen exception gäbe, müsste sie doch dann beim aufruf mittels konsole angezeigt werden.

Ich habe im code zwei externe dateien... also zwei klassen die ich in eclipse dem projekt hinzugefügt hab. Eine der klassen kümmert sich nur um die pixel, aber die andere sorgt für die kommunikation übers internet, und das funktioniert auf jeden fall, denn wenn nicht, würde ich keine daten angezeigt bekommen.

Das Arbeitsverzeichnis sollte eigentlich auch kein problem sein, denn das Programm liest keine lokalen dateien ein.



EDIT: Ob das ein Windows 7 Problem ist? Unter XP auf meinem Laptop werden die Pixel auch beim doppelklick angezeigt.
EDIT2: wenn ich statt der methode draw drawline nehme um nicht punkte anzuzeigen sondern auch die verbindungslinien, werden die linien richtig angezeigt, auch wenn ich in Win7 doppelklicke.
 
Zuletzt bearbeitet:

Arp

Mitglied
Java:
import java.awt.Graphics; 
import javax.swing.*; 
import java.io.*;
import java.util.GregorianCalendar;
import java.util.Vector;
import java.util.Calendar;

class drawVerlauf extends JPanel 
{ 
  @Override 
  protected void paintComponent( Graphics g ) 
  { 
    super.paintComponent( g ); 
    g.drawLine( 10, 20, 10, 200 );
    g.drawLine( 10, 200, 380, 200 );
	Vector<String> datum = new Vector<String>();
	Vector<Double> inhalt = new Vector<Double>();
    Calendar cal = new GregorianCalendar();
	try
    {
    	BufferedReader input = new BufferedReader(new FileReader("gesamtverlauf.dat"));
    	String zeile="";
    	while((zeile=input.readLine())!=null)
		{
			String arr1[] = zeile.split(";");
			if(Integer.parseInt(arr1[0].split("\\.")[2])==cal.getTime().getYear()+1900)
			{
				datum.add(arr1[0]);
				inhalt.add(Double.parseDouble(arr1[1]));
			}
		}
	}
    catch(Exception e)
    {
    	e.printStackTrace();
    }
    double max = 0;
    double min = 1e6;
    for(int i=0;i<inhalt.size();i++)
    {
    	if(inhalt.elementAt(i)>max)
    		max = inhalt.elementAt(i);
    	if(inhalt.elementAt(i)<min)
    		min = inhalt.elementAt(i);
    }
    
    
    for(int i=0;i<datum.size();i++)
    {
    	int x = 0;
    	int x1 = 0;
    	String arr[] = datum.elementAt(i).split("\\.");
    	cal.set(Integer.parseInt(arr[2]),Integer.parseInt(arr[1])-1,Integer.parseInt(arr[0]));
    	x=cal.get(cal.DAY_OF_YEAR);
    	
     	int y = (int)(200-180/(max*1.2/inhalt.elementAt(i)));
    	
    	
    	if(i>0)
  //  		g.drawRect(x+15, y, 1, 1);
  //  	else
    	{
    		arr = datum.elementAt(i-1).split("\\.");
    		cal.set(Integer.parseInt(arr[2]),Integer.parseInt(arr[1])-1,Integer.parseInt(arr[0]));
    		x1=cal.get(cal.DAY_OF_YEAR);
    		int y1 = (int)(200-180/(max*1.2/inhalt.elementAt(i-1)));
    		g.drawLine(x, y, x1, y1);
    	}
    	
    }
  } 
}

das ist die klasse die ich zum zeichnen benutze. zuerst hatte ich die if bedingung nicht, dafür halt nur die g.drawRect(...) zeile.
(ja ich weiss, kombination von daten und grafikausgabe ist nicht schön, aber ich war zu faul :))

Und so wirds aufs Panel gezeichnet:

Java:
JFrame MainWindow = new JFrame();
MainWindow.setLayout(null);
MainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MainWindow.setSize(850,600);
MainWindow.setResizable(false);
MainWindow.setLocationRelativeTo(null);

JPanel diagrammrahmen = new JPanel();
drawVerlauf diagrammrahmen = new drawVerlauf();
diagrammrahmen.setLayout(null);
diagrammrahmen.setSize(400,220);
diagrammrahmen.setLocation(10,300);
diagrammrahmen.setBorder(BorderFactory.createTitledBorder("Verlauf"));
diagrammrahmen.add(new drawVerlauf());
MainWindow.add(diagrammrahmen);
MainWindow.setVisible(true);

kompletter code zum zeichnen und dann aufs panel zeichnen und adden des panels auf das JFrame.

Naja, aber wie gesagt. Ich glaube nicht das es am code liegt, denn unter XP 32bit läufts wunderbar, nur unter Win7 x64, werden die pixel durch g.drawRect() nicht angezeigt, g.drawLine() aber schon.
 

Michael...

Top Contributor
In einer paintComponent(...) wird nach Möglichkeit nur gezeichnet. Das Einlesen und Verarbeiten von Dateien hat darin gar nichts zu suchen! Zu mal das ja jedes Mal passiert, wenn das Panel neu gezeichenet wird - und das kannst Du ja nicht wollen.
 

Arp

Mitglied
Ich weiss das das nicht die feine Art ist. Aber ich hatte die wahl zwischen faul sein und das einlesen der Daten direkt in der Paint zu machen, oder jedesmal die klasse aufzurufen. Naja, aber schlimm ist das auch nicht, denn das Panel wird auch nur neu gezeichnet wenn die daten sich geändert haben, von daher kann es ruhig so bleiben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
berserkerdq2 Wie greife ich auf ein Element zu, welches ich beim Scenebuilder erstellt habe AWT, Swing, JavaFX & SWT 10
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
G Gui updated beim zweiten Aufruf nicht mehr AWT, Swing, JavaFX & SWT 15
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
R NullPointerException beim Start des Fensters AWT, Swing, JavaFX & SWT 1
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J Kann mir jemand beim MediaPlayer helfen ? AWT, Swing, JavaFX & SWT 2
S JavaFx Zufallsfarbe beim Button-Klick AWT, Swing, JavaFX & SWT 22
L Swing JDialog ton beim klicken ausstellen AWT, Swing, JavaFX & SWT 1
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
ruutaiokwu Swing windowStateChanged macht exakt das Gegenteil beim Verändern der Fenstergrösse AWT, Swing, JavaFX & SWT 3
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
D JInternalFrame wechselt Position beim ersten Click AWT, Swing, JavaFX & SWT 0
steven789hjk543 Swing Verstehe etwas beim GUI nicht AWT, Swing, JavaFX & SWT 3
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
J Hilfe beim tablevies AWT, Swing, JavaFX & SWT 2
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
L Java FX Exception beim start AWT, Swing, JavaFX & SWT 2
L JSplitPane Divider Location beim Maximieren AWT, Swing, JavaFX & SWT 6
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
emma_louisa JavaFX Werte beim Aufrufen des Fensters übernehmen (SceneBuilder) AWT, Swing, JavaFX & SWT 3
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
N Eclipse - GUI - MacBook - Buttonsichtbarkeit beim Anlegen/Erstellen AWT, Swing, JavaFX & SWT 14
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
E Swing Miserable Performance beim Ändern der Hintergrundfarbe von JLabels AWT, Swing, JavaFX & SWT 3
L Charset beim Drucken falsch AWT, Swing, JavaFX & SWT 2
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
R Swing Programm läuft nur beim Debuggen korrekt ab AWT, Swing, JavaFX & SWT 4
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
W Kodierung (CharSet) beim Schreiben ändern AWT, Swing, JavaFX & SWT 1
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
Thallius Swing "..." beim JLabel verhindern? AWT, Swing, JavaFX & SWT 3
P Scrollbalken verschwinden beim Zoomen AWT, Swing, JavaFX & SWT 4
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
D JavaFX (WebStart) Graues Fenster beim Start AWT, Swing, JavaFX & SWT 4
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
I JavaFX Speichern der eingefügten Einträge beim Neustart des Programms AWT, Swing, JavaFX & SWT 2
J JavaFx/SceneBuilder/Felder beim verlassen prüfen AWT, Swing, JavaFX & SWT 1
D JavaFX Beim Schließen (Rotes X) Code ausführen AWT, Swing, JavaFX & SWT 1
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
C Gesucht: Hilfe beim programmieren. AWT, Swing, JavaFX & SWT 1
S Action durchführen beim Programm beenden AWT, Swing, JavaFX & SWT 3
J JavaFX Tooltip Verzögerung beim ersten Anzeigen AWT, Swing, JavaFX & SWT 4
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
D JavaFX build.fxbuild error beim Erstellen einer exe AWT, Swing, JavaFX & SWT 2
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
M Swing Vorgehen beim Aufruf der Klassen/Methoden AWT, Swing, JavaFX & SWT 7
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
F Breite beim GridBagLayout festlegen AWT, Swing, JavaFX & SWT 2
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
R TriangleMesh verschwindet teilweise beim resizen des Frames, sowie beim rotieren? AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
K Swing Automatisches "Packen" beim "Neu-Painten" AWT, Swing, JavaFX & SWT 2
U Swing Beim Bedienen eines Buttons JFrame schließen AWT, Swing, JavaFX & SWT 2
U Fenster beim Vergörßern immer quadratsich AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben