paint() wird aufgerufen, aber nicht angezeigt

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Aloah.

Ich möchte gern auf einem TestJPanel 4 Graphiken an bestimmten Positionen anzeigen lassen, welche sich später auch noch bewegen sollen. Habe das ganze auch schon versucht wie folgt zu implementieren:

Code:
package gui;

import java.awt.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
 
class PaintAllComponents extends JPanel
{
	Image background;
        Image paddle;
	Image ball;
 
    public PaintAllComponents()
    {
        try {
        	background = ImageIO.read(new File("field1.jpg"));
        	paddle = ImageIO.read(new File("paddle.gif"));
     	   	ball = ImageIO.read(new File("ball.gif"));
        	}
        	catch(IOException e) 
        		{
        		e.getMessage();
        	    } 
    }
 
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(background, 0, 0, this);
        g.drawImage(paddle, 0, 220, this);
        g.drawImage(paddle, 775, 220, this);
        g.drawImage(ball, 395, 270, this);
        System.out.println("ZEICHNE!");
     } 
    
    public static void main( String args[] ) {
    	 JFrame f = new JFrame();
    	 f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    	 f.setSize ( 800, 600 );
    	 f.getContentPane().add(new PaintAllComponents());
    	 f.setVisible( true );
    	 }
    }

Die paint()-Funktion wird zwar aufgerufen, aber nie angezeigt. Ich brauch da mal dringend Hilfe. Vielen Dank schonmal.

MfG.
 
S

SlaterB

Gast
bei mir gehts,

sind die Bilder denn da? die müssen im Grundverzeichnis des Projekes sein,
oberhalb des Ordners gui, nicht in gui!

was kommt bei
System.out.println(new File("field1.jpg").exists());
raus?
 
G

Guest

Gast
Wow du bist mein Held. Ja es lag am falschen Pfad. Dachte, dass die Zugriffe innerhalb eines Packages auch direkt den Pfad beinhalten. Genial! Vielen lieben Dank.

Achja er hat natürlich false ausgegeben. Habe die Pfade nun geändert und alles läuft wie geschmiert.

Schönen Tag noch.
 
S

SlaterB

Gast
hättest du
System.err.println(e.getMessage());
statt
e.getMessage();

dann würde dir das Programm das auch sagen, wie mir gerade auffällt
 
G

Gast

Gast
Ja das war auch der Grund, warum ich den falschen Pfad ausgeschlossen habe, da eben keine error message kam. Aber funktionier ja nun. Danke nochmal!
 
G

Gast

Gast
Okay wenn wir schonmal dabei sind. Wie muss nun der Thread aussehen, der das Fenster immer wieder neu zeichnet und die einzelnen Componenten an variable Stellen setzt? Es soll sich ja schließlich auch bewegen. Habe mal einen KeyListener implementiert welcher den Y-Wert des einen Bildes auf Knopfdruck um 15px nach oben verschieben soll. Jedoch wird es nach Bildneuzeichnung nicht dort angezeigt, sondern an der 1. Position.
 
S

SlaterB

Gast
> Wie muss nun der Thread aussehen

sowas überlese zumindest ich ;)
programmieren musst du schon alleine

einfach einen Thread laufen lassen und alle x Sekunden was tun

zu Y 15 usw.:
kann mir nix genaues drunter vorstellen,
erweitere doch das obige schön vollständige Programm,
dann kann man wieder alles kinderleicht nachprüfen
 
G

Gast

Gast
Ai ai Sir. Ich setz mich ran, sobald ich was hab meld ich mich nochmal.
 
G

Guest

Gast
zu y 15:

Code:
package gui;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
 
class test extends JPanel
{
	BufferedImage background;
	BufferedImage paddle;
	BufferedImage ball;
	BufferedImage goodie;
 
    public test()
    {
        try {
        	background = ImageIO.read(new File("gui/field.jpg"));
        	paddle = ImageIO.read(new File("gui/paddle.gif"));
     	   	ball = ImageIO.read(new File("gui/ball.gif"));
     	   	goodie = ImageIO.read(new File("gui/goodie.jpg"));
        	}
        	catch(IOException e) 
        		{
        		System.err.println(e.getMessage()); 
        	    } 
    }
 
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(background, 0, 0, this);
        g.drawImage(paddle, 0, p1y, this);
        g.drawImage(paddle, 780, p2y, this);
        g.drawImage(ball, bx, by, this);
        g.drawImage(goodie, 140, 230, this);
        System.out.println("ZEICHNE! "+p1y);
     } 
   
    public static void main( String args[] ) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        f.setSize ( 800, 574 );
        f.getContentPane().add(new test());
        f.setVisible( true );
        f.addKeyListener(new Keyboard());
        }
    
    public static int bx = 385;
    public static int by = 260;
    public static int p1y = 230;
    public static int p2y = 230;
 }

Code:
package gui;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Keyboard implements KeyListener {	
	
	String aktion="nix";

public void keyTyped(KeyEvent e) {}
	
public void keyReleased(KeyEvent e){}

public void keyPressed(KeyEvent e) {
	int pressed=e.getKeyCode();
	if (e.getKeyCode() == 38)
	{
		aktion = "Oben";
		PaintAllComponents.p1y = PaintAllComponents.p1y + 10;
		System.out.println("WERT Y-ACHSE: "+PaintAllComponents.p1y);
	}
	if (e.getKeyCode() == 40)
	{
		aktion = "Unten";
		PaintAllComponents.p1y = PaintAllComponents.p1y - 10;
		System.out.println("WERT Y-ACHSE: "+PaintAllComponents.p1y);
	}
}

}

Hier ist nun der KeyListener mit bei. Dort wird per Pfeilhoch Taste der Y-Wert mit dem paddle gezeichnet wird um 10 erhöht. Möchte also, dass sich das Paddle hoch und runter bewegen lässt. Die Tastatureingabe funktioniert auch einwandfrei, nur wird es nicht neu gezeichnet. Hoffe du verstehst mein Vorhaben und das dazugehörige Problem nun.
 
G

Guest

Gast
Natürlich beim umbasteln auf die TestUmgebung einen Fehler gemacht:

So muss die Keyboard klasse aussehen:

Code:
package gui;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Keyboard implements KeyListener {	
	
	String aktion="nix";

public void keyTyped(KeyEvent e) {}
	
public void keyReleased(KeyEvent e){}

public void keyPressed(KeyEvent e) {
	int pressed=e.getKeyCode();
	if (e.getKeyCode() == 38)
	{
		aktion = "Oben";
		test.p1y = test.p1y + 10;
		System.out.println("WERT Y-ACHSE: "+test.p1y);
	}
	if (e.getKeyCode() == 40)
	{
		aktion = "Unten";
		test.p1y = test.p1y - 10;
		System.out.println("WERT Y-ACHSE: "+test.p1y);
	}
}

}
 
S

SlaterB

Gast
es fehlt ein repaint(),
idealerweise auf das JFrame

zumTesten sollte auch Minimieren/ Wiederherstellen reichen,
10 Pixel ist natürlich keine große Änderung
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T paint() wird nicht aufgerufen AWT, Swing, JavaFX & SWT 8
H Swing paint() von JPanel wird nicht aufgerufen AWT, Swing, JavaFX & SWT 10
K AWT paint wird nicht aufgerufen AWT, Swing, JavaFX & SWT 7
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
T paint() wird zweimal ausgeführt AWT, Swing, JavaFX & SWT 6
D paint-Funktion wird nicht ausgeführt AWT, Swing, JavaFX & SWT 6
G Paint wird 2 mal ausgeführt (?) AWT, Swing, JavaFX & SWT 4
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
U Was ist der Unterschied von paint und paincomponent? AWT, Swing, JavaFX & SWT 3
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
L Berechnungen in paint AWT, Swing, JavaFX & SWT 8
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
S 2 Paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
P Paint und paintComponent AWT, Swing, JavaFX & SWT 12
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S 2 paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
C JFrame paint ohne hintergrund nutzen AWT, Swing, JavaFX & SWT 6
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
S paint() verzögern AWT, Swing, JavaFX & SWT 9
K AWT begrenzte anzahl paint aufrufe AWT, Swing, JavaFX & SWT 6
B Infolabel Probleme mit Paint() ? AWT, Swing, JavaFX & SWT 8
L AWT paint mit ArrayList und Iterator AWT, Swing, JavaFX & SWT 3
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
L Swing 64bit Problem mit paint/paintComponent AWT, Swing, JavaFX & SWT 7
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
T JFrame und paint() AWT, Swing, JavaFX & SWT 5
B Ablauf der paint-Methoden von JComponents AWT, Swing, JavaFX & SWT 20
J AWT Methode paint() AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Hostkomponentengröße in paint AWT, Swing, JavaFX & SWT 2
L JFrame an Paint-Inhalt anpassen AWT, Swing, JavaFX & SWT 6
E Warum übermalt paint das ganze Fenster? AWT, Swing, JavaFX & SWT 15
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
G paint-Methode kopiert GUI AWT, Swing, JavaFX & SWT 14
H paint überlappend AWT, Swing, JavaFX & SWT 5
E paint AWT, Swing, JavaFX & SWT 3
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
S JCheckBox Paint AWT, Swing, JavaFX & SWT 7
F AWT Probleme mit der paint() methode AWT, Swing, JavaFX & SWT 2
C Unterschiedlicher Aufruf der paint() Methode ? (AWT/Swing) AWT, Swing, JavaFX & SWT 2
L Problem mit paint Methode und Bild AWT, Swing, JavaFX & SWT 7
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
R LayoutManager Image Paint + Text Panel AWT, Swing, JavaFX & SWT 10
F paint-Methode des JComboboxEditorComponent AWT, Swing, JavaFX & SWT 2
S Threads in einen Frame zeichnen lassen (Paint()?!) AWT, Swing, JavaFX & SWT 5
radiac Swing JFrame - paint(g) - FrameObjects bei activeRendering AWT, Swing, JavaFX & SWT 3
I AWT paint() in MouseEvent aufrufen klappt nicht AWT, Swing, JavaFX & SWT 8
hdi Swing JLabel & paint-Methode gemixt - wie schlimm wirklich? AWT, Swing, JavaFX & SWT 5
N Paint methode anhalten und neustarten AWT, Swing, JavaFX & SWT 5
H AWT Wann ist paint() fertig? AWT, Swing, JavaFX & SWT 7
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
W Steuerelemente und paint() in einem JPanel AWT, Swing, JavaFX & SWT 3
M Allgemeines zur paint Methode AWT, Swing, JavaFX & SWT 5
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
G Probleme mit repaint / paint AWT, Swing, JavaFX & SWT 6
A paint()-Methode für Videoexport nutzen AWT, Swing, JavaFX & SWT 2
K repaint() ruft paint() nicht auf AWT, Swing, JavaFX & SWT 14
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
bugmenot paint() verzögert ausgeführt? AWT, Swing, JavaFX & SWT 4
S paint() in anderen Methoden AWT, Swing, JavaFX & SWT 5
J getFontMetrics außerhalb von paint(Graphics g) AWT, Swing, JavaFX & SWT 8
D Paint() Methode aus einer anderen Klasse aufrufen AWT, Swing, JavaFX & SWT 6
H paint verwenden AWT, Swing, JavaFX & SWT 3
S java.awt.Component und paint() AWT, Swing, JavaFX & SWT 4
A Paint funktioniert nicht richtig AWT, Swing, JavaFX & SWT 7
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
G JScrollPane mit "paint" scrollt nicht AWT, Swing, JavaFX & SWT 2
C paint-Methode überschreiben AWT, Swing, JavaFX & SWT 19
hdi meine paint-methode macht faxen? AWT, Swing, JavaFX & SWT 21
T Variable Menge an Bildern außerhalb paint() zeichnen? AWT, Swing, JavaFX & SWT 2
G Paint und Buttons AWT, Swing, JavaFX & SWT 8
G JFrame JPanel und Paint(Image)? AWT, Swing, JavaFX & SWT 6
S Programm aufgrund von paint() zu langsam AWT, Swing, JavaFX & SWT 18
G 2x Graphics in einer paint() miteinander verbinden AWT, Swing, JavaFX & SWT 11
M Probleme mit paint() aus JFrame AWT, Swing, JavaFX & SWT 2
G paint() Methode aus anderer klasse aufrufen? AWT, Swing, JavaFX & SWT 6
G Frage zum paint Prozess AWT, Swing, JavaFX & SWT 3
D JPanel und Paint AWT, Swing, JavaFX & SWT 2
B Gui und Zeichnen (paint ? ) AWT, Swing, JavaFX & SWT 4
L Anzeigen von fotos: ImageIcon oder BufferedImage + paint() ? AWT, Swing, JavaFX & SWT 5
G Frage zur paint-Methode (AWT) AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen


Oben