Image wird nicht gezeichent?!

FraxxeY

Mitglied
Hallo, bin dabei ein kleines Glücksrad-Spiel zu entwerfen und hab dazu eine PNG mit einem Rad erstellt.

Das habe ich in meinem Java-Programm zeichnen lassen wollen, es wird aber nicht gezeichnet!

Der Code:

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;

public class FENSTER extends JFrame
{
    private JButton roll;
    private JFrame frame;
    private JTextField chancebox;
    private JLabel scheibe, ping;
  
    public static void main(String[] args){
        new FENSTER();     
    }
 
    public FENSTER()
    {
        super("Gambling");
        setVisible(true);
        setResizable(false);
        //setSize(1280,720);
        setBounds(100, 100, 1280, 720);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //setLayout(null);
        //getContentPane().setBackground(Color.darkGray);
     
        Icon x = new ImageIcon(getClass().getResource("ccc.png"));
    
        roll = new JButton("ROLL!", x);
        //roll.setVisible(true);
        roll.setBounds(390,500,500,80);
        //roll.setBackground(Color.orange);
        //roll.setOpaque(true);
        add(roll);
     
        scheibe = new WHEEL();
        scheibe.setBounds(10,10,5000,5000);
        add(scheibe); 
     
        //chancebox = new JTextField();
        //chancebox.setBounds(390, 450, 100, 25);
        //add(chancebox);
     
        repaint();     
    }
}
class WHEEL extends JLabel{

    public void paintComponent(Graphics g){
        AffineTransform at = AffineTransform.getTranslateInstance(100, 100);
        at.rotate(Math.toRadians(0));
        BufferedImage rad = LoadImage("rad.png");
        System.out.println("DDD");
 
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(rad, at, null);
    }

    BufferedImage LoadImage(String FileName){
        BufferedImage img = null;
        try{
            img = ImageIO.read(new File(FileName));
        }catch(IOException e){
        }
        return img;
    }
}

Wieso funktioniert das nicht? Wo hängts da? Ich verzweifle an einem bestimmt recht dummen Fehler :D

MFG
 
Zuletzt bearbeitet von einem Moderator:

Thallius

Top Contributor
Man erbt nicht von JFrame es sei denn man will es erweitern. Willst du aber nicht.

Klassennamen schreibt man zwar groß aber nicht komplett Groß.

Ist es wirklich dein Ernst das die Scheibe 5000x5000 Pixel groß sein soll?

Deine ganzen Bounds sind irgendwie komplett durcheinander. Dadurch müssten sich die Panel irgendwie überlappen. Das unterstützt Swing aber nicht. Es sei denn du würdest layered Panels benutzen.

Wenn du bei jedem mal neuzeichnen des Panels das Bild neu einlädst und erstellst, wirst du wahrscheinlich später eine Animation deines drehenden Rades haben, welche auf sagenhafte 1-2 Bilder pro Sekunde kommt.
 

FraxxeY

Mitglied
Schlimm wenn ich das trotzdem so lasse mit dem Frame?

Das mit den Klassennamen machen wir in der Schule so, Gewohnheit :)

Gehirnaussetzer, 500x500

Wie fix ich das?

Okay, das ist zu wenig :D Wie soll ich das dann ändern?

Gruß
 

FraxxeY

Mitglied
Was passiert denn eigentlich genau ? Im LoadImage catchst du eien Exception machst aber gar nichts. Sicher dass er nicht da reinlaeuft ?
Und das mit den Namen und dem Ableiten von JFrame etc. ist zwar nicht schön aber gerade nicht dein Problem.

In der paintComponent steht ein System.out.println...das wird bereits nicht mehr erreicht. In der exception wird nichts ausgegeben wenn ich println von e mach
 

JStein52

Top Contributor
Und welche Elemente siehst du am Bildschirm ? Siehst du den roll-Button mitsamt richtigem Icon ?
Und du bist sicher dass die paintComponent nicht aufgerufen wird ? Dann wäre die Frage warum ? Weil dieses JLabel verdeckt ist und gar nichts zu painten ist ?
 

JStein52

Top Contributor
Der Tip von @JCODA ist sicher auch noch zu beachten aber auch nicht das Problem da ja deine paintComponent gar nicht aufgerufen wird. Hast du mal versucht einen Konstruktor für WHEEL einzubauen der mindestens mal super() aufruft ?
 

X5-599

Top Contributor
@FraxxeY
Sicher, dass das dein aktueller Code ist? Denn so wie es aussieht, müsste das Wheel das einzigste sein, was angezeigt wird. Da die Zeile mit setLayout(null) auskommentiert ist, wird von JFrame der Standard Layoutmanager verwendet (BorderLayout). Wenn dabei zwei Komponenten an dieselbe Stelle gesetzt werden, wird das jeweils erste durch das jeweils letzte ersetzt. Die setBounds() der Komponenten werden dabei übrigens auch ignoriert.

Wie führst du den Code eigentlich aus? Als jar gepackt oder aus einer IDE?
 

FraxxeY

Mitglied
@FraxxeY
Sicher, dass das dein aktueller Code ist? Denn so wie es aussieht, müsste das Wheel das einzigste sein, was angezeigt wird. Da die Zeile mit setLayout(null) auskommentiert ist, wird von JFrame der Standard Layoutmanager verwendet (BorderLayout). Wenn dabei zwei Komponenten an dieselbe Stelle gesetzt werden, wird das jeweils erste durch das jeweils letzte ersetzt. Die setBounds() der Komponenten werden dabei übrigens auch ignoriert.

Wie führst du den Code eigentlich aus? Als jar gepackt oder aus einer IDE?
Ich weiß auch nicht weiter, die Zeile ist auskommentiert so weit ich weiß, hab gerade keinen Zugriff auf den Code. Ich starte direkt aus Eclipse heraus.
 

X5-599

Top Contributor
Ich habe es so gemacht:

Code:
public class TestGui
{
	class Inhalt extends JLabel
	{
		public void paintComponent(Graphics g)
		{
			try
			{
				AffineTransform at = AffineTransform.getTranslateInstance(100, 100);
				at.rotate(Math.toRadians(45));
				
				Image img = ImageIO.read(Inhalt.class.getResource("/input/icon.png"));
				Graphics2D g2 = (Graphics2D)g;
				g2.drawImage(img, at, null);
			}
			catch(IOException e)
			{
				e.printStackTrace();
			}
			
		}
	}
	
	public TestGui()
	{
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JLabel inhalt = new Inhalt();
		frame.add(inhalt, BorderLayout.CENTER);
		
		frame.pack();
		frame.setSize(200, 200);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
	
	public static void main(String[] args)
	{
		SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run()
			{
				new TestGui();
			}
		});
	}
}

Ist ähnlich dem Code von @FraxxeY. Ich leite lediglich nicht von JFrame ab, sondern erzeuge eines. Und mein JLabel ist eine innere Klasse.
 

X5-599

Top Contributor
Habe ich nicht ausprobiert, weil wie gesagt das für mich so aussieht, dass in seinem geposteten Code lediglich das WHEEL angezeigt werden müsste. Er sagt aber, das gerade dieses nicht angezeigt wird. Da muss irgendwas anderes nicht stimmen. Ich wollte nur zeigen, dass es nicht an einem fehlenden Konstruktor des abgeleiteten JLabels liegen kann.

Meine Vermutung ist, dass die Reihenfolge vo JButton und WHEEL im obersten Code vertauscht ist. Also, dass der JButton zum Schluss dem JFrame ge'added wurde. Das würde nämlich dazu führen, dass das paintComponent() des JLabels nie ausgeführt wird, weil das WHEEL durch den JButton ersetzt wurde.
Ist natürlich alles reine Spekulation.
 

X5-599

Top Contributor
Ich habe gerade den original Code getestet. Im Grunde funktioniert der. Die setBounds() der Komponenten wirken sich auch bei gesetzten BorderLayout (Standard für JFrame) aus. Wusste ich zb nicht. Habe angenommen die werden von LayoutManagern ignoriert...
Also es werden der JButton und das JLabel gezeichnet.

Die paintComponent() Methode wird demnach also auch ausgeführt. Sieht man auch am System.out.println("DDD"). Wie gesagt, wenn das Bild "rad.png" nicht gefunden wird, sieht man natürlich auch nichts mehr vom JLabel. Dessen paintComponent() Methode wird aber dennoch ausgeführt.
Sollte das System.out.println("DDD") nicht in der Konsole erscheinen, weiss ich auch nicht mehr weiter.

Mein Rat wäre das ImageIO.read(new File("...")) durch:
Code:
ImageIO.read(getClass().getResource("rad.png"));
zu ersetzen. Denn ich nehme an, das Bild (ccc.png) des JButtons wird angezeigt? Dieses wird ja auf gleiche Weise geladen.
 

JStein52

Top Contributor
Sollte das System.out.println("DDD") nicht in der Konsole erscheinen
Hat er oben gesagt, dass das nicht rauskommt. Aber wenn der gleiche Code bei dir funktioniert scheint bei ihm doch irgendwas anders zu sein was wir gerade nicht wissen. Und die Sache mit dem Konstruktor war auch nur ein herumstochern weil ich ja auch keinen prinzipiellen Fehler erkennen kann. Vielleicht sagt ja unser TE noch was dazu ;);)
 

JStein52

Top Contributor
Und wenn in WHEEL das Bild nicht gefunden wird kommt natürlich auch eine Exception ! @FraxxeY hat zwar gesagt wenn er ein println im catch einbaut kommt da auch nichts aber das kann alles so nicht sein.
Also: Auf jeden Fall im catch eine Ausgabe machen denn einfach nichts machen ist total sinnlos ! Und vielleicht ist ihm auch nicht bewusst dass mit seinen beiden Methoden die Bilder einzulesen die in verschiedenen Ordnern stehen müssen damit sie auch gefunden werden ....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Image von Resource wird nicht geladen Java Basics - Anfänger-Themen 2
Y Trotz add wird Image in GradBagLayout nicht angezeigt Java Basics - Anfänger-Themen 5
G Image/-Icon wird nicht auf JPanel angezeigt Java Basics - Anfänger-Themen 4
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
G Area mit Teil-Image füllen Java Basics - Anfänger-Themen 0
B Image Matching in Memory Minigame Java Basics - Anfänger-Themen 7
J JLabel bzw. Image Icon mit KeyEvent bewgen Java Basics - Anfänger-Themen 9
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
T Image Icon Java Basics - Anfänger-Themen 3
K File (png) in Image laden Java Basics - Anfänger-Themen 3
M Image löschen Java Basics - Anfänger-Themen 2
G Image in Vordergrund Java Basics - Anfänger-Themen 3
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
H Image laden Java Basics - Anfänger-Themen 4
R Image drehen Java Basics - Anfänger-Themen 1
R Image Teilen Java Basics - Anfänger-Themen 3
B Image laden im GridBagLayout Java Basics - Anfänger-Themen 3
N Datentypen Image zu Byte-Array Java Basics - Anfänger-Themen 4
N Hintergrund image mit .setContentPane Java Basics - Anfänger-Themen 6
W aus Methode auf JLabel zugreifen und Image verändern Java Basics - Anfänger-Themen 1
S buffered image Java Basics - Anfänger-Themen 18
V Scale displayed Image via JCheckBox Java Basics - Anfänger-Themen 1
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
M Image Download klappt nicht mehr Java Basics - Anfänger-Themen 4
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
S Image nach MausMotion rotieren Java Basics - Anfänger-Themen 7
L Erste Schritte Java Image und Video-Slideshow GUI Java Basics - Anfänger-Themen 3
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
S Image in Panel laden Java Basics - Anfänger-Themen 12
V Image Crawler Java Basics - Anfänger-Themen 3
P Erste Schritte Buffered Image splitten und darstellen Java Basics - Anfänger-Themen 2
P Erste Schritte Image anzeigen in ausführbarer jar mit der Toolkit class Java Basics - Anfänger-Themen 8
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
A Image (Bitmap) in String (für XML) Java Basics - Anfänger-Themen 7
F Buffered Image über Socket versenden Java Basics - Anfänger-Themen 6
T Image ist Null - warum? Java Basics - Anfänger-Themen 18
V Image -> 2D Array (int [][]) Java Basics - Anfänger-Themen 4
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
V FileInputStream auf ein swt.Image Java Basics - Anfänger-Themen 6
A Wie kann man etwas von Typ Image wieder löschen? Java Basics - Anfänger-Themen 7
F Image übertragen und zeichnen Java Basics - Anfänger-Themen 8
G Problem mit Image.IO.read( File ) Java Basics - Anfänger-Themen 3
G Image spiegeln Java Basics - Anfänger-Themen 17
Spin Image helper Java Basics - Anfänger-Themen 6
M Image Metadaten setzen Java Basics - Anfänger-Themen 2
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
C Image draw... Java Basics - Anfänger-Themen 7
M Image-Icon Ändern Java Basics - Anfänger-Themen 15
J Image upload auf ImageShack,TinyPic usw. Java Basics - Anfänger-Themen 11
R Image laden die Zweite Java Basics - Anfänger-Themen 4
R Image laden Java Basics - Anfänger-Themen 10
M Image zeichenen mit Double Werten Java Basics - Anfänger-Themen 4
B polyline auf buffered image malen Java Basics - Anfänger-Themen 2
G Image to File Java Basics - Anfänger-Themen 4
T Image Position erkennen Java Basics - Anfänger-Themen 6
Spin Image skalieren Java Basics - Anfänger-Themen 2
Spin Background Image Java Basics - Anfänger-Themen 2
K Image / drawImage Java Basics - Anfänger-Themen 2
P Buffered Image, Bereich ausschneiden Java Basics - Anfänger-Themen 3
F Image Editor Java Basics - Anfänger-Themen 2
R Image aus jar laden (dieses mal awt) Java Basics - Anfänger-Themen 19
B Image flimmert Java Basics - Anfänger-Themen 4
Povlsen84 Image exakt erzeugen Java Basics - Anfänger-Themen 5
B Teile einer Image in neue Image kopieren Java Basics - Anfänger-Themen 4
X ARGB Werte auslesen aus Image Java Basics - Anfänger-Themen 2
O Image Loader laedt bild nicht Java Basics - Anfänger-Themen 11
H String to image! Java Basics - Anfänger-Themen 6
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2
M Probleme mit Manifest und Image Java Basics - Anfänger-Themen 2
T Java Bilderverwaltung - Image Fetcher Problem Java Basics - Anfänger-Themen 4
E Image in Datei speichern bzw anzeigen Java Basics - Anfänger-Themen 5
G Image laden Java Basics - Anfänger-Themen 16
O Drag & Drop mit Image? Java Basics - Anfänger-Themen 2
M Image aus JPanel Java Basics - Anfänger-Themen 2
G Kompletten (image) Array löschen Java Basics - Anfänger-Themen 14
P Fileinputstream to image? Java Basics - Anfänger-Themen 3
G Image Problem Java Basics - Anfänger-Themen 5
G Image Java Basics - Anfänger-Themen 3
M draw.Image Java Basics - Anfänger-Themen 11
O Image laden Java Basics - Anfänger-Themen 6
G Image Java Basics - Anfänger-Themen 2
S Image-Datei mit relativem Pfad angeben Java Basics - Anfänger-Themen 3
S Botton und Image kombinieren Java Basics - Anfänger-Themen 3
S import javax.image.io.*; funktioniert nicht Java Basics - Anfänger-Themen 28
D Image drehen Java Basics - Anfänger-Themen 6
DeeDee0815 Uncaught error fetching image Java Basics - Anfänger-Themen 2
A Image erstellen Java Basics - Anfänger-Themen 3
N Grösse eines Image ändern? Java Basics - Anfänger-Themen 4
I Image Dateinformationen auslesen Java Basics - Anfänger-Themen 7
A image uploader applet Java Basics - Anfänger-Themen 10
S image speichern Java Basics - Anfänger-Themen 12
D ImageIO metadata auslesen aus png image Java Basics - Anfänger-Themen 2
G Ausmaße eines Image-Object herrausfinden Java Basics - Anfänger-Themen 4
R Einem Image-Object Alpha-Transparenz hinzufügen Java Basics - Anfänger-Themen 3
S Image in byte[] umwandeln? Java Basics - Anfänger-Themen 2
G Ein Image langsam einblenden und nach 5 Sekunden ausblenden? Java Basics - Anfänger-Themen 10
U Image einlesen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben