Programm hängt sich auf nachdem repaint() benutzt wurde

Maicus

Mitglied
Guten Abend,
ich hab ein Problem mit JSwing,
also ich versuche ein Bild in ein JPanel hinzuzufügen und zwar über eine verkettete Liste damit ich mehrere Bilder zeichnen kann. Das Problem ist das das Bild was ich hinzufügen will nicht angezeigt wird und das Programm nach dem repaint() aufgerufen abschirmt und nurnoch über den TaskManager geschlossen werden kann.

[Java]

//Forum: http://www.java-forum.org/java-basi...rexception-beim-laden-bildern.html#post910388


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.border.TitledBorder;
import java.io.*;
import javax.imageio.*;
import java.net.*;

interface Pictures
{
EinfachVerketteteListe list = new EinfachVerketteteListe();
}
/*
* Marcus Janiks Engine zur einfach Erstellung von einfachen Grafischen Anwendung unter Bentzung von Swing
*/
public class Leinwand extends JFrame
{
ShowCanvas Center, Left, Right, Top, Bot;
{}


Leinwand(String Titel, int breite, int hoehe)
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(Titel);
setSize(breite, hoehe);
setResizable(false);
setVisible(true);

}

public void neueFlaeche(int height, int width, String position)
{
if(position.equals("Mitte"))
{
Center = new ShowCanvas(height, width);
add(Center, BorderLayout.CENTER);
}
else if(position.equals("Rechts"))
{
Right = new ShowCanvas(height, width);
add(Center, BorderLayout.LINE_END);
}
else if(position.equals("Links"))
{
Left = new ShowCanvas(height, width);
add(Center, BorderLayout.LINE_START);
}
else if(position.equals("Oben"))
{
Top = new ShowCanvas(height, width);
add(Center, BorderLayout.PAGE_START);
}
else if(position.equals("Unten"))
{
Bot = new ShowCanvas(height, width);
add(Center, BorderLayout.PAGE_END);
}
validate();
repaint();
}
public void ladeBild(String name, String pfad)
{
Pictures.list.addLast(new ImageManager(name, pfad));
}
public void bildDazu(String position, String bild, int x, int y)
{
if(position.equals("Mitte"))
{
Center.addImage(bild, x, y);
}
}
}

class ImageManager
{
String name;
Image icon;
int width, height;
int x, y;

ImageManager(String name, String path)
{
icon = new ImageIcon(this.getClass().getResource(path)).getImage();
this.name = name;
}
ImageManager(String bild, int nx, int ny)
{
icon = Pictures.list.findPic(bild);
x = nx;
y = ny;
this.name = "Bild";
}

public Image getImage()
{
return icon;
}

public String getName()
{
return name;
}

public int getY()
{
return y;
}

public int getX()
{
return x;
}

}

class ShowCanvas extends JPanel
{
EinfachVerketteteListe BilderReihenfolge;
int width, height;
ShowCanvas(int nwidth, int nheight) {
super(new BorderLayout());
width = nwidth;
height = nheight;
setSize(width, height);
BilderReihenfolge = new EinfachVerketteteListe();
setPreferredSize(new Dimension(width, height));
setBackground(Color.black);
//addMouseMotionListener(new MouseMotionHandler());

}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2D = (Graphics2D) g;
ListElement le = BilderReihenfolge.getFirstElem();
while (le != null)
{
g2D.drawImage(le.getObj().getImage(), le.getObj().getX(),le.getObj().getY(), this);

//g2D.drawImage(background.getBufferedImage(),0,0, this);
}
}

class MouseMotionHandler extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
/*x = e.getX();
y = e.getY();
repaint();*/
}

public void mouseMoved(MouseEvent e) {
}
}
public void addImage(String name, int x, int y)
{
BilderReihenfolge.addLast(new ImageManager(name, x, y));
repaint();
}
}

class GameTimer
{

private final int NANOSECONDS = 1000000000;

private boolean timerStarted;
private long beginTime, time, timeDifference;

public GameTimer()
{
timerStarted = false;
beginTime = 0;
time = 0;
timeDifference = 0;

}

public void start()
{

timerStarted = true;
beginTime = System.nanoTime();

}

public void stop()
{
timerStarted = false;
beginTime = 0;

}

public int get()
{
time = System.nanoTime();
timeDifference = time - beginTime;
beginTime = time;

return (int)timeDifference;
}

}

class EinfachVerketteteListe {

ListElement startElem;

public EinfachVerketteteListe()
{
}

public void addLast(ImageManager o){
if(startElem == null)
startElem = new ListElement(o);
else
{
ListElement newElem = new ListElement(o);
ListElement lastElem = getLastElem();
lastElem.setNextElem(newElem);
}
}

public void insertAfter(ImageManager prevItem, ImageManager newItem) {
ListElement newElem, nextElem, pointerElem;
pointerElem = startElem.getNextElem();
while(pointerElem != null && !pointerElem.getObj().equals(prevItem)){
pointerElem = pointerElem.getNextElem();
}
newElem = new ListElement(newItem);
nextElem = pointerElem.getNextElem();
pointerElem.setNextElem(newElem);
newElem.setNextElem(nextElem);
}

public void delete(ImageManager o){
ListElement le = startElem;
while (le.getNextElem() != null && !le.getObj().equals(o)){
if(le.getNextElem().getObj().equals(o)){
if(le.getNextElem().getNextElem()!=null)
le.setNextElem(le.getNextElem().getNextElem());
else{
le.setNextElem(null);
break;
}
}
le = le.getNextElem();
}
}

public boolean find(ImageManager o){
ListElement le = startElem;
while (le != null){
if(le.getObj().equals(o))
return true;
le = le.nextElem;
}
return false;
}
public Image findPic(String bild)
{
ListElement le = startElem;
while (le != null)
{
if(le.getObj().getName().equals(bild))
{
return le.getObj().getImage();
}
le = le.nextElem;
}
return null;
}

public ListElement getFirstElem() {
return startElem;
}

public ListElement getLastElem() {
ListElement le = startElem;
while(le.getNextElem() != null){
le = le.getNextElem();
}
return le;
}

public void writeList() {
ListElement le = startElem;
while(le != null){
System.out.println(le.getObj());
le = le.getNextElem();
}
}
}

class ListElement {

ImageManager obj;

ListElement nextElem;

public ListElement(ImageManager obj) {
this.obj = obj;
nextElem = null;
}

public void setNextElem(ListElement nextElem) {
this.nextElem = nextElem;
}

public ListElement getNextElem() {
return nextElem;
}

public ImageManager getObj() {
return obj;
}
}
[/Java]



Die Klasse aus der aus alles gestartet wird:
[Java]


public class Win4
{
Leinwand canvas;

Win4()
{
canvas = new Leinwand("4 Gewinnt", 900, 400);
canvas.neueFlaeche(400, 200, "Mitte");
canvas.ladeBild("background", "images/sunw01.jpg");
canvas.bildDazu("Mitte", "background", 0, 0);
}
}
[/Java]

Ich weiß nicht genau was das Problem ist schätze aber das Graphics2D das Bild nicht zeichnen kann, wieso auch immer und das hängt sich dann auf.

Ich hoffe ihr wisst was das Problem ist und könnt mir bei der Lösung helfen.
 

njans

Top Contributor
Java:
ListElement  le = BilderReihenfolge.getFirstElem();
        while (le != null)
        {
            g2D.drawImage(le.getObj().getImage(), le.getObj().getX(),le.getObj().getY(), this);
            
        //g2D.drawImage(background.getBufferedImage(),0,0, this);
        }
Wann wird le jemands null? Besser gefragt: Warum sollte sich le jemals verändern?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Swing Programm hängt sich auf! AWT, Swing, JavaFX & SWT 23
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
J Programm hängt sich bei Log In auf AWT, Swing, JavaFX & SWT 1
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
R GUI hängt während Programm läuft AWT, Swing, JavaFX & SWT 7
T Java Runtime.exec per JButton auslösen -> Programm hängt AWT, Swing, JavaFX & SWT 10
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
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
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
T Programm im METRO Design? 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
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 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
GUI-Programmer Swing JWindow - Programm wird ohne Grund beendet AWT, Swing, JavaFX & SWT 3
E Kreis-Mal-Programm AWT, Swing, JavaFX & SWT 7
P Programm aktuallisiert sich nur beim Rüberzeigen AWT, Swing, JavaFX & SWT 6
T Java-Anwendung arbeitet Programm in seltsamer Reihenfolge ab AWT, Swing, JavaFX & SWT 3
C Programm für 5 sekunden anhalten und actionevent abfangen AWT, Swing, JavaFX & SWT 18
J Programm schließen AWT, Swing, JavaFX & SWT 4
J Programm nur einmal öffnen AWT, Swing, JavaFX & SWT 3
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
T Programm vom Desktop starten! AWT, Swing, JavaFX & SWT 2
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
M Browser in Programm einbinden AWT, Swing, JavaFX & SWT 4
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
H Userinput in GUI an externes Programm AWT, Swing, JavaFX & SWT 8
D Firefox aus Programm starten AWT, Swing, JavaFX & SWT 4
S LayoutManager Einfaches Programm mit VE und Eclipse3.6 realisieren AWT, Swing, JavaFX & SWT 2
J SWT 32 bit Programm für 64 bit Jave AWT, Swing, JavaFX & SWT 10
S AWT Fenster schließen und Programm beenden AWT, Swing, JavaFX & SWT 10
H Infofenster vor dem eigentlichen Java Programm AWT, Swing, JavaFX & SWT 3
B Uberschrift in Swing-Programm zur Laufzeit aendern... AWT, Swing, JavaFX & SWT 4
C Swing Kleines Programm mit SWING unter Verwendung von MVC AWT, Swing, JavaFX & SWT 5
capgeti Wie Programm in JPanel (o.ä.) starten? AWT, Swing, JavaFX & SWT 3
B Externes Programm mit Robot Steuern AWT, Swing, JavaFX & SWT 3
G Programm läuft nur auf manchen Rechnern AWT, Swing, JavaFX & SWT 10
M SWT Programm pausiert ungewollt AWT, Swing, JavaFX & SWT 5
K Website in Java Programm einbinden AWT, Swing, JavaFX & SWT 3
B komplettes programm in einem fenster AWT, Swing, JavaFX & SWT 5
L Frage bei Programm mit Zufallskreisen AWT, Swing, JavaFX & SWT 9
L Programm terminated (zu frueh) AWT, Swing, JavaFX & SWT 3
T SplashScreen im laufenden Programm AWT, Swing, JavaFX & SWT 2
M Panelinhalt im Programm verändern AWT, Swing, JavaFX & SWT 12
R Programm nicht mehr in der Taskleiste AWT, Swing, JavaFX & SWT 2
3TageBart Ebenen in Zeichen-Programm implementieren AWT, Swing, JavaFX & SWT 9
H Swing HUD in externes Programm einblenden AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben