Grafik von main aus aufrufen

chrysi

Mitglied
Zu dem folgenden Code hätte ich eine Frage: Wie kann ich von main aus das Bild aufrufen? So wie der Code unten steht funktioniert es leider nicht. HELP, please!
---------------------------------------------------------------------
Java:
import java.awt.*;
import javax.swing.*;

public class Graphikdemo extends JApplet
{
   Image bild;

   
   public void init()
   {
      bild = getImage(getDocumentBase(),
             "bilder/desktop.jpg");
   }

 public void paint(Graphics g)
   {
      lesen("test.txt");
       
       g.drawString("Anzeigen von Bildern", 20, 20);
      for(int i = 0; i <= 20; i++)
       for(int j = 0; j <= 20; j++)
      g.drawImage(bild,i*30,j*30,30,30,this);
    }

  public static void main() throws IOException
  {

Graphikdemo hallo = new Graphikdemo();
hallo.paint();


  }
}
 

chrysi

Mitglied
Danke für die schnelle Antwort.

Ich brauche dass, weil das Programm mehrere Funktionen haben soll: Grafik anzeigen und Datei lesen. Deshalb steht im Code auch die Zeile

lese("test.txt");

Die Zeile kann man ruhig erstmal streichen.

Aber wie kann man das Bild von main aus aufrufen? Geht das oder nicht? Für Antworten wäre ich dankbar.
 

Quaxli

Top Contributor
Ein Applet hat keine main-Methode.
Was für eine Anwendung die main-Methode ist, ist für ein Applet die init()-Methode.
In der paint-Methode sollte auch sonst kein weiterer Code reingepackt werden. Da hat das lese(...) nix verloren. In der paint-Methode wird gezeichnet, mehr nicht.

Hab's Dir mal hingebogen.

Java:
import java.awt.*;
import javax.swing.*;

public class Graphikdemo extends JApplet {

	private static final long	serialVersionUID	= 1L;
	Image	bild;

	public void init() {
    //Bild laden- bei diesem Beispiel liegt das Bild im gleichen Verzeichnis
		//wie die class-Datei
    bild = getImage(getCodeBase(),"./air.jpg"); 
    
    //Bild mit MediaTracker laden und erst weite machen, wenn zuverlässig geladen
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(bild, 0);
    
    try {
       mt.waitForAll();
    } catch (InterruptedException e) {}
    
	}

	//in der paint-Methode nur zeichnen, sonst nix
	public void paint(Graphics g) {
		super.paint(g); //super-Aufruf nciht vergesssen.

		g.drawString("Anzeigen von Bildern", 20, 20);
    g.drawImage(bild, 0, 0, this); 
	}


}
 

chrysi

Mitglied
Danke. Ich hätte noch 2 Fragen:

1. Kann man in der init auch die Parameter übergeben, wie das Bild angezeigt werden soll? D.h. mit x- und y- Koordinate und Höhe und Breite.

2. Mein Programm funktioniert nicht mit dem Lesen der Datei. Was ist da falsch? Hier ist mal der Code:

Java:
import java.awt.*;
import javax.swing.*;
import java.io.*;

public class Graphikdemo extends JApplet {
 
    private static final long   serialVersionUID    = 1L;
    Image   bild;
 
    public void init() {
    
    lesen("test.txt");
        
    bild = getImage(getCodeBase(),"./desktop.jpg");
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(bild, 0);
    
    try {
       mt.waitForAll();
    } catch (InterruptedException e) {}
    
    }
    
    public void paint(Graphics g) {
        
       super.paint(g);
       
       g.drawImage(bild, 10, 10, this); 
    }
      
    public static void lesen(String name) throws IOException{
    FileReader fr = new FileReader("test.txt");
    BufferedReader br = new BufferedReader(fr);
    int anzahl;

    String zeile = "";

    while( (zeile = br.readLine()) != null )
    {
    anzahl = zeile.length();
    System.out.print(zeile);
    System.out.print("\n");
    }
    br.close();
}
     
}
 

Crian

Top Contributor
Richtiges Einrücken würde das Lesen sehr erleichtern. Wenn man sich die Mühe schon für sich selbst nicht geben mag, sollte man es wenigstens tun, wenn man Hilfe sucht.

Ich versteh es nicht, warum sich da so viele schwer tun. In Eclipse zum Beispiel kann man genau einstellen, wie man den Text formatiert haben will und ihn dann auf Knopfdruck einrücken lassen.
 

Quaxli

Top Contributor
Richtiges Einrücken würde das Lesen sehr erleichtern. Wenn man sich die Mühe schon für sich selbst nicht geben mag, sollte man es wenigstens tun, wenn man Hilfe sucht.

Ich versteh es nicht, warum sich da so viele schwer tun. In Eclipse zum Beispiel kann man genau einstellen, wie man den Text formatiert haben will und ihn dann auf Knopfdruck einrücken lassen.

Hauptsache wieder ein Punkt mehr für die Postinganzahl, gell? :autsch:


@chrysi:

Zu Deinen Fragen:
1. Nein, geht nicht. Das kannst Du für Standardklassen mit einem Blick in die API auch selbst rausfinden. init() ist dort parameterlos definiert. Man kann über die HTML-Seite in der das Applet eingebunden wird eine gewisse Größe festlegen oder in der init-Methode mit den vorhanden Methoden wie z. B. setSize() arbeiten.

2. "funktioniert nicht" ist ein bißchen dünn.... Du würdest doch auch niemals ein Auto in die Werkstatt bringen und sagen "fährt nicht", oder? :noe:
Du solltest eine Fehlermeldung posten oder zumindest das falsche Verhalten beschreiben.
Folgender Code hat bei mir funktioniert - vorausgesetzt, die Textdatei befindet sich bei den Class-Dateien im Verzeichnis.

Java:
import java.awt.*;
import javax.swing.*;
import java.io.*;
 
public class Graphikdemo extends JApplet {
 
    private static final long   serialVersionUID    = 1L;
    Image   bild;
 
    public void init() {
    
    try {
			lesen("test.txt");
		} catch (IOException e1) {
			e1.printStackTrace();
		}
        
    bild = getImage(getCodeBase(),"./desktop.jpg");
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(bild, 0);
    
    try {
       mt.waitForAll();
    } catch (InterruptedException e) {}
    
    }
    
    public void paint(Graphics g) {
        
       super.paint(g);
       
       g.drawImage(bild, 10, 10, this); 
    }
      
    public static void lesen(String name) throws IOException{

    	
   	FileReader fr = new FileReader("test.txt");
    BufferedReader br = new BufferedReader(fr);
    int anzahl;
 
    String zeile = "";
 
    while( (zeile = br.readLine()) != null )
    {
    anzahl = zeile.length();
    System.out.print(zeile);
    System.out.print("\n");
    }
    br.close();
}
     
}
 

chrysi

Mitglied
Hallo,

2. "funktioniert nicht" ist ein bißchen dünn.... Du würdest doch auch niemals ein Auto in die Werkstatt bringen und sagen "fährt nicht", oder? :noe:
Du solltest eine Fehlermeldung posten oder zumindest das falsche Verhalten beschreiben.
Folgender Code hat bei mir funktioniert - vorausgesetzt, die Textdatei befindet sich bei den Class-Dateien im Verzeichnis.
Das Problem waren die IOExceptions. Aber ich habe das jetzt hingekriegt.

Aber es gibt wieder ein neues Problem:(

Und zwar beim folgenden Code. Ich möchte gerne zwei Bilder an verschiedenen Positionen anzeigen lassen. Aber irgendwie erscheint immer nur 1 Bild. Ich glaube das erste Bild wird überschrieben. Wie kann ich beide Bilder gleichzeitig anzeigen lassen? Danke im Voraus.

Java:
import java.awt.*;
import javax.swing.*;
import java.io.*;

public class Graphikdemo extends JApplet {
 
    private static final long   serialVersionUID    = 1L;
    Image   bild;
 
    int x = 20;

    public void init() {
    

    bild = getImage(getCodeBase(),"./desktop2.jpg");

    MediaTracker mt = new MediaTracker(this);
    mt.addImage(bild, 0); 
    try {
       mt.waitForAll();
    } catch (InterruptedException e) {}

    x = x + 100;

    MediaTracker mt2 = new MediaTracker(this);
    mt2.addImage(bild, 0); 
    try {
       mt2.waitForAll();
    } catch (InterruptedException e) {}
}
    
    
    public void paint(Graphics g) { 
       super.paint(g);
       g.drawImage(bild, x, 20, 50, 50, this); 
    }
      
}
 

Michael...

Top Contributor
Ich möchte gerne zwei Bilder an verschiedenen Positionen anzeigen lassen. Aber irgendwie erscheint immer nur 1 Bild. Ich glaube das erste Bild wird überschrieben.
In dem Code ist nichts von einem zweiten Bild zu sehen. Weder wird ein zweites Bild geladen noch gezeichnet.

Denke hier mangelt es an den Grundlagen der Programmierung und das Problem ist eventuell noch zu "kompliziert".
 

Crian

Top Contributor
Hauptsache wieder ein Punkt mehr für die Postinganzahl, gell? :autsch:

Du solltest vielleicht nicht von dir auf andere schließen. Die Anzahl der Beiträge ist doch völlig wurscht. Der sorgfältige Umgang mit den eigenen Quelldateien hingegen ist sehr wichtig.

Es ist einfach hilfreich für einen selber, den Überblick zu behalten und vor allem auch, später sich schnell wieder einzulesen, wenn der Code so formatiert ist, wie man es gewöhnt ist und erwartet. Wenn man nun alles auf einer Ebene belässt, was inhaltlich aber anders ist, dann muss man selbst die geschweiften Klammern zählen und macht sich das Leben nur unnötig schwer.
 

chrysi

Mitglied
In dem Code ist nichts von einem zweiten Bild zu sehen. Weder wird ein zweites Bild geladen noch gezeichnet.
Ja, dass könnte der Fehler sein. Ich dachte, dass ich zwei Bilder lade und zwar über die folgenden beiden Zeilen:

mt.addImage(bild, 0); // 1. Bild
mt2.addImage(bild, 0); // 2. Bild

Das scheint aber nicht zu stimmen.

Also ist es wahrscheinlich der Befehl:

g.drawImage(bild, x, 20, 50, 50, this);

Aber wie kann ich den von init aus 2 mal aufrufen?

MfG, chrysi.
 

Michael...

Top Contributor
Ja, dass könnte der Fehler sein. Ich dachte, dass ich zwei Bilder lade und zwar über die folgenden beiden Zeilen:

mt.addImage(bild, 0); // 1. Bild
mt2.addImage(bild, 0); // 2. Bild

Das scheint aber nicht zu stimmen.

Also ist es wahrscheinlich der Befehl:

g.drawImage(bild, x, 20, 50, 50, this);
Weder noch, das einzige Bild wird hier geladen:
[JAVA=16]bild = getImage(getCodeBase(),"./desktop2.jpg");[/code]

Aber wie kann ich den von init aus 2 mal aufrufen?
Und diese Frage zeigt mir, dass Dein Vorhaben in Relation zu Deinem Kenntnisstand recht ambitioniert ist ;-)
Ist nicht böse gemeint. Aber für das was was Du vorhast fehlen Dir die Grundlagen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
M Umwandlung in den HSV-Farbraum lässt die Grafik pixelig werden AWT, Swing, JavaFX & SWT 8
S 2D-Grafik Winkelberechnungen auf 2D Grafik AWT, Swing, JavaFX & SWT 2
E Grafik karte erkennen AWT, Swing, JavaFX & SWT 3
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
D Swing JCombobox Aktion löscht Grafik AWT, Swing, JavaFX & SWT 1
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
S Höhendaten in einer Grafik ausgeben AWT, Swing, JavaFX & SWT 2
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
S Grafik in einer Klassen einfügen/hinzufügen AWT, Swing, JavaFX & SWT 1
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
F AWT Grafik wird nicht richtig aktualisiert AWT, Swing, JavaFX & SWT 2
J JTabbedPane Grafik unterhalb der Tabs AWT, Swing, JavaFX & SWT 3
F Grafik hängt sich auf AWT, Swing, JavaFX & SWT 20
S LookAndFeel GUI-Grafik AWT, Swing, JavaFX & SWT 5
J Verschwommene Grafik AWT, Swing, JavaFX & SWT 4
C LayoutManager Grafik soll nicht im GridLayout Skalieren AWT, Swing, JavaFX & SWT 3
F Grafik mit Buttons versehen AWT, Swing, JavaFX & SWT 8
C Grafik Taschenrechner AWT, Swing, JavaFX & SWT 5
J Grafik (Kreis) schneller bewegen? AWT, Swing, JavaFX & SWT 6
Kenan89 Grafik und Text in JPanel anzeigen AWT, Swing, JavaFX & SWT 8
D Fenster mit Grafik überlappen AWT, Swing, JavaFX & SWT 3
Maxim6394 Rotation einer Grafik in swing AWT, Swing, JavaFX & SWT 13
D Swing Grafik in JPanel anzeigen. AWT, Swing, JavaFX & SWT 3
W Grafik von JFrame korrekt speichern AWT, Swing, JavaFX & SWT 7
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Swing JLabel (mit einer Grafik) aktualisieren AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Problem beim Drucken eines Grafik-Objekts AWT, Swing, JavaFX & SWT 2
Daniel_L Grafik erstellen, drin zeichnen und dann speichern AWT, Swing, JavaFX & SWT 2
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
O Swing Label(bzw. Grafik) verdekt von anderm Label AWT, Swing, JavaFX & SWT 2
T rekursive Grafik AWT, Swing, JavaFX & SWT 5
I 2D-Grafik Problem mit schreiben von Text auf eine Grafik AWT, Swing, JavaFX & SWT 7
F Swing Framework gesucht (Swing, Chart, "Scheduling" Grafik) AWT, Swing, JavaFX & SWT 2
S Pacman-Grafik AWT, Swing, JavaFX & SWT 23
N Eigener Grafik Editor mit fehlerhafter Anzeige AWT, Swing, JavaFX & SWT 4
lordcarlos Dynamische und interaktive grafik AWT, Swing, JavaFX & SWT 5
D Systemmodale Grafik AWT, Swing, JavaFX & SWT 10
J Geladene Grafik in ImageIcon auf Panel fest positionern. AWT, Swing, JavaFX & SWT 8
W Grafik aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing Zugriff auf Polyline in Grafik AWT, Swing, JavaFX & SWT 4
A Swing Bei größe verändern des Fensters Grafik weg AWT, Swing, JavaFX & SWT 3
C gute Grafik-Bibliotheken gesucht AWT, Swing, JavaFX & SWT 6
D JFormattedTextfield um Grafik erweitern AWT, Swing, JavaFX & SWT 15
O Grafik wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
P JPanel mit Grafik von HDD über JTree AWT, Swing, JavaFX & SWT 10
S 2D-Grafik beeinflussen durch Scrollbalken AWT, Swing, JavaFX & SWT 2
A Grafik aus MIME-kodiertem Inhalt erzeugen AWT, Swing, JavaFX & SWT 2
T (WACOM) Grafik Tablet abfragen AWT, Swing, JavaFX & SWT 3
S Button mit Grafik versehen AWT, Swing, JavaFX & SWT 5
D Grafik bearbeiten AWT, Swing, JavaFX & SWT 11
M Ich habe Werte und Brauche Grafik! AWT, Swing, JavaFX & SWT 3
M Grafik flexibel an berechneten Koordinaten positionieren AWT, Swing, JavaFX & SWT 4
M dynamische Grafik in JFrame einbetten AWT, Swing, JavaFX & SWT 2
G Transparente Grafik über JMF Video zeichnen AWT, Swing, JavaFX & SWT 2
I Grafik in Text umwandeln AWT, Swing, JavaFX & SWT 11
G Grafik auf mehrere Methoden/Klassen zerlegen AWT, Swing, JavaFX & SWT 2
G Grafik in Button einbinden AWT, Swing, JavaFX & SWT 3
M Grafik in JFrame in Kombination mit Steuerelementen AWT, Swing, JavaFX & SWT 2
T grafik in jpanel wird nicht neugezeichnet AWT, Swing, JavaFX & SWT 7
F Zellen über eine Grafik legen AWT, Swing, JavaFX & SWT 7
S Grafik Farbwert verändern? AWT, Swing, JavaFX & SWT 8
D Farbe einer Grafik über den Cursor abfragen AWT, Swing, JavaFX & SWT 6
G Keine Anzeige von Grafik bei externem paintComponent-Aufruf AWT, Swing, JavaFX & SWT 2
S Popup auf Grafik AWT, Swing, JavaFX & SWT 18
J Grafik "sichtbar" verschieben AWT, Swing, JavaFX & SWT 2
G Grafik auf JComponent ohne Überschreiben von Paint-Methoden AWT, Swing, JavaFX & SWT 4
G Grafik erzeugen: eine Art Zustandsgraph eines Automaten AWT, Swing, JavaFX & SWT 7
P grafik in JScrollPanel AWT, Swing, JavaFX & SWT 5
D AppletCode als JAR aus JSP benutzen und als Grafik speichern AWT, Swing, JavaFX & SWT 2
S Update von Grafik auf JPanel AWT, Swing, JavaFX & SWT 2
S Auf einem JTabbedPane eine Grafik zeichnen AWT, Swing, JavaFX & SWT 11
W Grafik in JLabel aktualisieren AWT, Swing, JavaFX & SWT 4
S Tooltip mit Grafik AWT, Swing, JavaFX & SWT 2
D Visualisierung einer Selektion in einer Grafik. AWT, Swing, JavaFX & SWT 7
P Vektor-Grafik im XML-Format speichern AWT, Swing, JavaFX & SWT 39
P Grafik auf Button AWT, Swing, JavaFX & SWT 3
E Einträge der JComboBox werden durch Grafik verdeckt AWT, Swing, JavaFX & SWT 11
L Komponente und Grafik gleichzeitig auf JPanel zeichnen AWT, Swing, JavaFX & SWT 11
T swing - grafik schrittweise ausgeben ohne repaint() AWT, Swing, JavaFX & SWT 2
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
T Szene wechselen JavaFX mit If in Main Class AWT, Swing, JavaFX & SWT 2
T Fxbefehle aus Main umwandeln in @FXML AWT, Swing, JavaFX & SWT 21
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
L Editor does not contain a main type AWT, Swing, JavaFX & SWT 1
zhermann JavaFX Main App wird nicht geöffnet AWT, Swing, JavaFX & SWT 6
K JavaFX Titel und Fenstergröße aus Main.java übergeben AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
Paul15 ActionListen auf Object in main AWT, Swing, JavaFX & SWT 7
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
V JavaFX, Pane construktor von einer Klasse in der Main verwenden. AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben