Bilder einfügen

Status
Nicht offen für weitere Antworten.

Dukler

Mitglied
Hallo!

Ich programmiere schon seit ca. 8 Monaten Java, habe mich aber noch nie an die Image-Ausgabe gewagt.
Ich habe schon eine Methode zum ausgeben von Images ausprobiert, es passiert aber nichts.
Gesucht habe ich schon, hab aber nichts gefunden.

Code:
package graphik;

import java.awt.*;


public class Graphik extends Frame
{
    
    private void initComponents()
    {
        
        setVisible(true);
        setBackground(new Color(0,0,0));
        setSize(new Dimension(800,600));
        
        
    }
    public Grafik()
    {
        initComponents();
    }
    
    public static void main(String[] args)
    {
        new Graphik();
    }
    public void paint(Graphics g)
    {

        Image img = Toolkit.getDefaultToolkit().createImage("Haus.gif");
        g.drawImage(img,385,285,this);
    }
    
}
Ich danke für hilfreiche Antworten
 
vermutlich ist das Bild noch nicht geladen. Verwende einen MediaTracker oder ImageIO um sicherzustellen, dass das Bild auch geladen ist. Außerdem solltest du das Bild außerhalb deiner paint-Methode laden!

Und, gibt es einen bestimmten Grund, warum du noch AWT verwendest und nicht Swing?

Dann hast du nicht richtig gesucht, das Web und dieses Forum hier überhäuft dich mit Antworten auf deine Fragen!
 
Du erstellst eine neue Instanz mit dem Standartkonstruktor:
new Graphik();

Aber der Standartkonstruktor ist nicht gefüllt.
Vielleicht hilft es die Methode public Grafik() in public Graphik() umzubennen.
 
Könnte mal einer von euch einen vollständigen Code zum Laden und auf die Leinwand (Canvas) einfügen posten??
Ich hab bisher immer nur Codesegmente gefunden...
 
Hobbit_Im_Blutrausch hat gesagt.:
Leinwand ... wer sagt denn sowas? Codebeispiele gibt es doch wahrlich zu genüge!

genau CodeBEISPIELE gibt es nur einfach einen kompletten Code wie man das macht gibbet net!!
zu mindestens habe ich noch keinen gefunden!!
Außerdem wollte ich ein Bild in Java einladen und auf eine Canvas (wenn du Leinwand nicht magst) zeichnen und nicht erstellen und dann zeichen.
Den Artikel lese ich außerdem nicht zum ersten mal.
 
Ob du jetzt ein Codebeispiel kopierst und ne Klasse außenrum baust, oder eben die komplette Klasse kopierst ist ja eigentlich ziemlich egal.

Also ich bin ja auch nicht der verfechter von korrekter Rechtschreibung in Foren/ICQ/..., aber wenn du schon komische, deutsche Begriffe für Klassen verwendest (die Klasse heißt nunmal Canvas und nicht Leinwand. Wenn wir hier alles eindeutschen würden, dann könnten wir uns nicht mehr unterhalten. Weil dann würden wir laufend Begriffe wie "gepufferter Leser/Schreiber", "doppelt" oder "zerhackte Mappe" verwenden, die keine Sau versteht. Wenn dein Kumpel aus England kommt und Steven heißt, deutschst du ihn ja auch nicht ein und nennst ihn Stefan.), dann solltest du dich auch wenigstens richtig ausdrücken. Du wolltest ein "Bild in Java einladen"!? Feiert dieser Java denn eine Party? Darf ich auch kommen? Und was willst du ansonsten noch? "zeichnen und nicht erstellen und dann zeichen"? Wie meinen?

Ich mag zu bezweifeln, dass es keinen kompletten Code gibt. Und wenn du das Kapitel von der Java-Insel schon mehrmals gelesen, aber es immer noch nicht verstanden hast, und jedesmal ein komplettes Programm brauchst, um etwas neues zu verstehen, dann würd ich mir langsam mal Gedanken machen, ob die Programmierung wirklich das Richtige für dich ist.

Aber weil ich heute (mal wieder) meinen tierlieben Tag habe:

Code:
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;


public class Graphik extends Frame
{
   
    private BufferedImage img = null;
   
    private void initComponents()
    {
    	try {
	    	img = ImageIO.read(new File("C:/Dokumente und Einstellungen/All Users/Dokumente/Eigene Bilder/Beispielbilder/Sonnenuntergang.jpg"));
    	}
    	catch (IOException e) {
    		e.printStackTrace();
    	}
        setBackground(new Color(0,0,0));
    }
    public Graphik()
    {
        initComponents();
    }

    public void paint(Graphics g)
    {

        g.drawImage(img,200,200,this);
    }
    
    public static void main(String[] args) {
    	
    	Graphik gra = new Graphik();
    	gra.setSize(800, 600);
    	gra.setVisible(true);
    }
   
}
 
Hey danke so einfach geht das...

Warum ich das Leinwand und nicht Canvas nenne hat einen ganz einfachen Grund:
Ich arbeite mit einer vereinfachten Version von Canvas die eben Leinwand heißt.
Und außerdem rate mal warum diese Frage im Anfängerforum steht? - ich lerne die Sprache nicht freiwillig!

Und noch was wie kann ich dieses Bild auf die Canvas (In der class Leinwand) einfügen??
 
naja, deine "vereinfachte" Leinwand-Klasse kennt aber keiner.

Ist im Prinzip das Selbe, nur dass die Klasse nicht von Frame, sondern eben von Canvas bzw. Leinwand erbt.
 
Ich hab noch 2 Fragen dazu:

1.wenn ich dir Methode paint() aufrufe, was muss ich dem dann geben???

2.wenn ich den von Leinwand erben lasse will der nen Construktor warum und wie kann man das beheben???

würde mich um schnelle Antwort freuen...

Dankö
 
kivver hat gesagt.:
1.wenn ich dir Methode paint() aufrufe, was muss ich dem dann geben???

Nen Keks, dann freut "er" sich 🙂 .

du rufst NIE paint auf, sondern nur repaint.

kivver hat gesagt.:
2.wenn ich den von Leinwand erben lasse will der nen Construktor warum und wie kann man das beheben???

a.) Indem du minimum einen Konstruktor von Leinwand überschreibst
b.) Indem du in Leinwand einen Standardkonstruktor definierst

Generell (auch in Bezug auf deinen anderen Thread(s) hier), würde ich dir drigend empfehlen nochmal ein Einsteigerbuch zu lesen. Bzw. zumindest den Teil, in welchem es um GUI geht.
 
du rufst NIE paint auf, sondern nur repaint.
meinst du main() oder hab ich was übersehen

Und ich hab eine gaaannnzzz große Bitte kannst du mir das dann mal in komplett-Form so hinschreiben??
Nur noch ein einziges Mal ich muss mein Projekt bis morgen fertig haben und will ihm noch den letzten Feinschliff verpassen (den rest habe ich schon gemacht) dann lese ich mir auch nomma das Buch durch und hoffe, dass ich euch nicht mehr fragen muss.
*liebguck
*bettel

:cry:
 
was wo hinschreiben? Nein, ich meine nicht "main()" sondern "repaint()". Ich mein scho das, was ich auch schreib 😉 .
 
alle Klassen, die von Component (oder einer davon erbenden Klasse) erben, erben natürlich auch die "repaint()" Methode von Component.

Von mir wirst du aber heut kein lauffähiges Programm mehr bekommen. Ich verabschiede mich nämlich in ca. 5 Minuten für heute aus dem Forum ...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben