Swing JWindow - Programm wird ohne Grund beendet

GUI-Programmer

Top Contributor
Hallo zusammen

Mein Hintergrund Verwalter Programm aus JWindow zwischen den Desktopbild und Dektopverknüpfungen wird manchmal einfach so ohne jeden Grund beendet.

Eine Exception gibts anscheinend auch nicht. Habe die Application Klasse auf folgender Weise schon geändert, um die Exception auszugeben:

Java:
import java.awt.EventQueue;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.InvalidPropertiesFormatException;
import java.util.Properties;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.swing.JWindow;
import javax.swing.Timer;
import com.sun.awt.AWTUtilities;


@SuppressWarnings("serial")
public class Application extends JWindow {
	private View view;
	private Random random;
	private final Timer timer;
	
	private String pathToDirectory;
	private int xPosition, yPosition, width, height;
	private int interval;
	
	public Application() {
		Properties properties = new Properties();
		File file = new File("resources/settings.xml");
		try {
			FileInputStream fis;
			fis = new FileInputStream(file);
			properties.loadFromXML(fis);
		} catch(FileNotFoundException ex) {
			ex.printStackTrace();
		} catch(InvalidPropertiesFormatException ex) {
			ex.printStackTrace();
		} catch(IOException ex) {
			ex.printStackTrace();
		}
		pathToDirectory = properties.getProperty("pathToDirectory");
		xPosition = Integer.parseInt(properties.getProperty("xPosition"));
		yPosition = Integer.parseInt(properties.getProperty("yPosition"));
		width = Integer.parseInt(properties.getProperty("width"));
		height = Integer.parseInt(properties.getProperty("height"));
		interval = Integer.parseInt(properties.getProperty("interval"));
		
		random = new Random();
		
		view = new View(width, height);
		setContentPane(view);
		pack();
		setLocation(xPosition, yPosition);
		setFocusable(false);
		setVisible(true);
		AWTUtilities.setWindowOpaque(this, false);
		
		changeImage();
		
		timer = new Timer((interval*1000), new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				changeImage();
			}
		});
		
		timer.start();
	}
	
	/**
	 * Hier die entscheidente Änderung um eine mögliche Exception auszugeben:
	 */
	private void changeImage() {
		try {
			File directory = new File(pathToDirectory);
			if(directory!=null && directory.exists() && directory.isDirectory()) {
				File[] files = directory.listFiles(new MyFileFilter());
				int zufall = random.nextInt(files.length);
				Image image = null;
				try {
					image = ImageIO.read(files[zufall]);
				}
				catch(IOException ex) {
					ex.printStackTrace();
				}
				view.setImage(image);
			}
		} catch(Exception ex) {
			StackTraceElement[] stacktrace = ex.getStackTrace();
			StringBuffer buffer = new StringBuffer();
			for(int i=0; i<stacktrace.length; i++) {
				buffer.append(stacktrace[i]+"\n");
			}
			buffer.deleteCharAt(buffer.length()-1);
			JOptionPane.showMessageDialog(null, buffer.toString(), ex.toString(), JOptionPane.ERROR_MESSAGE);
		}
	}
	
	private class MyFileFilter implements FilenameFilter {
		@Override
		public boolean accept(File dir, String name) {
			boolean accept = false;
			if(name.endsWith(".png") || name.endsWith(".bmp") || name.endsWith(".jpg") || name.endsWith(".gif")) {
				accept = true;
			}
			return accept;
		}
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				new Application();
			}
		});
	}
}

Wenns was hilft, hier auch nochmal der Code der View, wobei darin eigentlich auch keine Exception möglich ist:
Java:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class View extends JPanel {
	private Image image;
	private int x, y, width, height;
	
	public View(int width, int height) {
		x = 0;
		y = 0;
		this.width = width;
		this.height = height;
		setPreferredSize(new Dimension(width, height));
		setOpaque(false);
		setFocusable(false);
	}
	
	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g.create();
		
		if(image != null) {
			g2.drawImage(image, x, y, width, height, this);
		}
	}
	
	public void setImage(Image image) {
		this.image = image;
		
		if(image.getWidth(this) > getWidth()) {
			width = getWidth();
			x = 0;
		} else {
			width = image.getWidth(this);
			x = ((getWidth()-width)/2);
		}
		if(image.getHeight(this) > getHeight()) {
			height = getHeight();
			y = 0;
		} else {
			height = image.getHeight(this);
			y = ((getHeight()-height)/2);
		}
		
		repaint();
	}
	
	public Image getImage() {
		return image;
	}
}

Ach ja, falls es hilft:
Das Programm wird über ne Jar Datei automatisch vom System (Windows 7 Home Premium) gestartet - Verknüpfung zu dieser Jar befindet sich im Autostart Ordner. Der Fehler der das Programm (also den javaw.exe Prozess) beendet tritt häufig auf, wenn man einen USB anschließt und sich das entsprechende Fenster öffnet, das nach einer Überprüfung fragt. Manchmal aber auch einfach so, ohne das irgendein Programm offen ist noch der Benutzer (also ich) was am PC macht.

Auch wenn ich das Programm per Doppelklick auf die Jar starte wird es manchmal beendet.
 

bERt0r

Top Contributor
Hmmm
Java:
  super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g.create();
        
        if(image != null) {
            g2.drawImage(image, x, y, width, height, this);
        }
Du erstellst da ein Graphics Objekt, disposest du das dann auch irgendwann?
 

bERt0r

Top Contributor
Ja natürlich das g2 Objekt. Das Graphics Objekt das dir übergeben wird DARFST du nicht disposen. Die Objekte die DU mit create() erstellst, musst du aber schon disposen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
V JWindow: Falsche Anzeige auf Ubuntu AWT, Swing, JavaFX & SWT 2
windl Overlay mit Transparentem JWindow und Canvas AWT, Swing, JavaFX & SWT 2
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
H Swing JTextField in JWindow, JWindow bekommt focus zurück? AWT, Swing, JavaFX & SWT 9
R KeyListener in JWindow AWT, Swing, JavaFX & SWT 7
M Swing Semi-Transparenter Button (normal, mouseover) auf transparentem JWindow AWT, Swing, JavaFX & SWT 44
M Animiertes Gif auf JWindow AWT, Swing, JavaFX & SWT 10
GUI-Programmer JWindow zwischen den Desktopbild und Dektopverknüpfungen AWT, Swing, JavaFX & SWT 16
N JOptionPane als JWindow AWT, Swing, JavaFX & SWT 2
J Swing JWindow flackert trotz Doppelpufferung AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
E JWindow bewegen, minimieren, vergrößern und schließen AWT, Swing, JavaFX & SWT 5
H Swing JWindow flackert beim resizen AWT, Swing, JavaFX & SWT 6
M JWindow schließen wenn Frame sich ändert AWT, Swing, JavaFX & SWT 2
D JWindow rund machen AWT, Swing, JavaFX & SWT 11
hdi JWindow's mouseExited methode AWT, Swing, JavaFX & SWT 2
P JFrame/JWindow in der Mitte des Bildschirms positionieren AWT, Swing, JavaFX & SWT 4
R JWindow dockt nicht an JFrame bzw. nicht sichtbar ? AWT, Swing, JavaFX & SWT 6
M JWindow mit Rahmen(border) ausstatten AWT, Swing, JavaFX & SWT 4
C JWindow.setVisible(true) dauert ewig AWT, Swing, JavaFX & SWT 7
G JFrame/JWindow AWT, Swing, JavaFX & SWT 2
H JWindow schließen bei einem Klick außerhalb der Anwendung? AWT, Swing, JavaFX & SWT 19
G JWindow Fensterhirachie beibringen AWT, Swing, JavaFX & SWT 14
R JWindow und JFrame AWT, Swing, JavaFX & SWT 3
S Bild auf JWindow platzieren AWT, Swing, JavaFX & SWT 4
L Probleme mit JTextField im JWindow AWT, Swing, JavaFX & SWT 4
F JWindow mit einem Bild und Transparenz AWT, Swing, JavaFX & SWT 4
L JWindow schliessen AWT, Swing, JavaFX & SWT 4
M jwindow --> jpanel --> jpanel --> textfeld nicht en AWT, Swing, JavaFX & SWT 3
D JWindow => transparent ? AWT, Swing, JavaFX & SWT 2
S JWindow zeichent Bild nicht AWT, Swing, JavaFX & SWT 2
K JWindow zerstören AWT, Swing, JavaFX & SWT 3
B KeyEvents und JWindow AWT, Swing, JavaFX & SWT 6
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
G CAD Programm AWT, Swing, JavaFX & SWT 4
thor_norsk E - Mail Programm AWT, Swing, JavaFX & SWT 2
_user_q Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
J Programm findet Resource nicht. AWT, Swing, JavaFX & SWT 6
N Programm Läuft nicht auf anderen Pcs AWT, Swing, JavaFX & SWT 9
imawake Java Paket-Tracking Programm 📦 AWT, Swing, JavaFX & SWT 7
S Lustiges programm schnell coden? AWT, Swing, JavaFX & SWT 2
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
M DragAndDrop - aus Browser ins Programm AWT, Swing, JavaFX & SWT 6
T Java GUI - Würfel Programm AWT, Swing, JavaFX & SWT 6
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
I Gui in bestehendes Java-Programm AWT, Swing, JavaFX & SWT 11
L JavaFX IntelliJ Standalone Programm exportieren AWT, Swing, JavaFX & SWT 9
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
M AWT Programm in den Tray minimieren AWT, Swing, JavaFX & SWT 2
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
A Java Programm gestalten AWT, Swing, JavaFX & SWT 4
P Swing Warum startet das Programm nicht? AWT, Swing, JavaFX & SWT 3
J JavaFX Kamera im Programm öffnen AWT, Swing, JavaFX & SWT 6
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower progressBar in ein bestehendes Programm einbauen AWT, Swing, JavaFX & SWT 3
J Verbesserungsvorschläge?! Kleines AWT Programm AWT, Swing, JavaFX & SWT 4
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
G Zeichnen Programm AWT, Swing, JavaFX & SWT 1
R Swing Programm läuft nur beim Debuggen korrekt ab AWT, Swing, JavaFX & SWT 4
Arif Swing Programm friert ein... AWT, Swing, JavaFX & SWT 2
apple_pie1998 Programm gibt plötzlich exceptions aus. AWT, Swing, JavaFX & SWT 4
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
T Swing Programm hängt sich auf! AWT, Swing, JavaFX & SWT 23
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
S Action durchführen beim Programm beenden AWT, Swing, JavaFX & SWT 3
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
G Programm GUI erstellen AWT, Swing, JavaFX & SWT 5
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
T Programm im METRO Design? AWT, Swing, JavaFX & SWT 1
J Programm hängt sich bei Log In auf AWT, Swing, JavaFX & SWT 1
C Programm mit Passwort schließen AWT, Swing, JavaFX & SWT 5
D Robot Programm mit Escape abbrechen (aus Eclipse heraus) AWT, Swing, JavaFX & SWT 2
N Programm läuft perfekt in Eclipse aber nicht in .JAR AWT, Swing, JavaFX & SWT 3
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
J Programm im GUI ausführen AWT, Swing, JavaFX & SWT 4
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
S Event Handling konsole Programm mit Tastendruck beenden AWT, Swing, JavaFX & SWT 5
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
W Windows Fenster in einem Programm AWT, Swing, JavaFX & SWT 2
F Mal Programm AWT, Swing, JavaFX & SWT 13
C In Hauptfenster Programm-Klassen implementieren AWT, Swing, JavaFX & SWT 9
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
C Swing Wie kann ich im Programm das Menü schließen AWT, Swing, JavaFX & SWT 2
J SWING - Programm ohne Eclipse etc. starten AWT, Swing, JavaFX & SWT 7
J Button soll nach Klick Text ändern und Programm in 3 Sekunden beenden AWT, Swing, JavaFX & SWT 6
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
M Programm in Jframe "einbinden" AWT, Swing, JavaFX & SWT 7
S Programm auf aktuellen Stand bringen AWT, Swing, JavaFX & SWT 2
Spin Tool: Popup -Programm AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben