Bild als Hintergrund

Status
Nicht offen für weitere Antworten.

joschika77

Bekanntes Mitglied
Hallo!

Wie bekomme ich ein Bild in den Hintergrund des Applets?

Versucht habe ich es so:

Code:
                    ImageIcon ImBu = new ImageIcon(getClass().getResource("test.bmp"));;

                    public void paint(Graphics g)
	{
		super.paint(g);
		Insets insets = getInsets();
		ImBu.paintIcon(this,g, insets.left, insets.top);

		g.setColor(Color.red);                         
		g.drawString("Hallo Java-Freaks!",150,125);
	}

MfG Ronn
 

biker126

Bekanntes Mitglied
und ich würd dir empfehlen einen mediatracker einzubauen. denn auch bei relativ kleinen bildern (paar kb) dauerts übers internet (ja, auch mit superduper dsl) meist zu lange bis das bild geladen ist. und dann wirds nur zu hälfte angezeigt usw. (gibt einfach unschöne effekte).
deshalb mit nem mediatracker warten bis das pic geladen ist und dann erst zeichnen...
 

Stefan1200

Top Contributor
biker126 hat gesagt.:
und ich würd dir empfehlen einen mediatracker einzubauen. denn auch bei relativ kleinen bildern (paar kb) dauerts übers internet (ja, auch mit superduper dsl) meist zu lange bis das bild geladen ist.

Er verwendet im obigen Source doch ImageIcon, das ist doch in Ordnung.
Und jeder der die API liest (;-)), weiss ja, das ImageIcon die Bilder mit dem MediaTracker lädt, damit diese vollständig sind.
 
B

Beni

Gast
Du zeichnest zuerst alle Components, und danach zeichnest Du das Bild über den Components.
:arrow: Reihenfolge umkehren.
 

Stefan1200

Top Contributor
Du lädst zum Beispiel ein Bild mit ImageIcon.
In der paint Methode rufst du g.drawImage() mit den entsprechenden Parametern auf (Das Bild bekommst du mit imageIcon.getImage()), die X,Y Größen bekommst du ja von deinem Frame.
Buttons und andere Componenten müssen nach g.drawImage() mit repaint() neugezeichnet werden, z.B. jbutton.repaint().

Das ist jetzt grob erklärt, bei mir funktioniert es, auch wenn es bei einer ComboBox nicht funktioniert, und Radio Buttons blöd aussehen wegen dem grau ;-).
 

joschika77

Bekanntes Mitglied
g.drawImage geht nur bei Image.
So ist es jetzt.

Code:
	ImageIcon bild = new ImageIcon(getClass().getResource("bild.bmp"));; 

	public void paint(Graphics g) 
	{ 
		super.paint(g);
   
                                        // so sieht man nichts
		bild.paintIcon(this,g, 10, 10);
		
                                        //so geht es gar nicht
		g.drawImage(bild,10,10,this);
	
		
	}

Gruß Ronn
 

Stefan1200

Top Contributor
Ronnules hat gesagt.:
g.drawImage geht nur bei Image.

Das ist zwar richtig, aber jetzt sage mir bitte, warum ich dir geschrieben habe, das du beim ImageIcon getImage() anwenden sollst, um ein Image Object zu erhalten ;-).
Aber es gibt viele Möglichkeiten, um zum Ziel zu kommen.
 
B

Beni

Gast
Stefan1200 hat gesagt.:
Buttons und andere Componenten müssen nach g.drawImage() mit repaint() neugezeichnet

NEIN !!!
1. Beiträge lesen die andere schreiben (grummel grummel)
2. Diese Methode funktioniert zwar, aber es ist die Umständlichste aller Möglichkeiten

Ein Beispiel mit AWT-Applet
forum_005.png

Code:
package testing;

import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

public class AppletTest extends Applet {
  private ImageIcon image;

  public AppletTest() {
  }

  public void init(){
    Button button = new Button( "hello" );
    setLayout( null );
    add( button );
    button.setBounds( 10, 10, 50, 50 );

    image = createImage();
  }

  private static ImageIcon createImage(){
    BufferedImage img = new BufferedImage( 100, 100, BufferedImage.TYPE_INT_RGB );

    Graphics g = img.createGraphics();

    g.setColor( Color.white );
    g.fillRect( 0, 0, 100, 100 );
    g.setColor( Color.blue );
    g.fillOval( 0, 0, 100, 100 );

    g.dispose();

    return new ImageIcon( img );
  }

  public void paint( Graphics g ){
    image.paintIcon( this, g, 0, 0 );
    super.paintComponents( g );
  }
}

@Ronnules
Überprüf doch mal, ob das Bild überhaupt angekommen ist.
 

joschika77

Bekanntes Mitglied
Ok,ok!
So hab ichs jetzt gemacht.Das Bild wird einfach nicht sichtbar.

Code:
public class App extends Applet
{
	ImageIcon bild = new ImageIcon(getClass().getResource("faust.bmp"));
	
	public void paint(Graphics g) 
	{ 
		super.paint(g);
		setSize(450,200);
   		g.setColor(Color.red);                          
   		g.drawString("Hallo Java-Freaks!",150,125); 

		g.drawImage(bild.getImage(),10,10,this);
		
	}  
}
 

Stefan1200

Top Contributor
@ Beni:

Naja, ich habe ja nur die Variante mitteilen wollen, die ich kenne.
Ob meine Variante gut ist, wollte ich damit nicht ausdrücken, aber anders kannte ich das nicht.

Funktioniert deine Variante eigentlich auch bei Swing einwandfrei?
 
B

Beni

Gast
@Ronnules
Hm, vielleicht hab ich jetzt was überlesen, und stelle deshalb meine Fragen doppelt:
Kannst Du sicher sein, dass das Bild existiert und geladen wird?

@Stefan
Mit ein paar Änderungen:

Code:
package testing;

import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

public class AppletTest extends JApplet {
  private ImageIcon image;

  public AppletTest() {
  }

  public void init(){
    JPanel panel = new JPanel( null ){
      public void paintComponent( Graphics g ){
        image.paintIcon( this, g, 0, 0 );
      }
    };

    Button button = new Button( "hello" );
    panel.add( button );
    getContentPane().add( panel );
    button.setBounds( 10, 10, 50, 50 );

    image = createImage();
  }

  private static ImageIcon createImage(){
    BufferedImage img = new BufferedImage( 100, 100, BufferedImage.TYPE_INT_RGB );

    Graphics g = img.createGraphics();

    g.setColor( Color.white );
    g.fillRect( 0, 0, 100, 100 );
    g.setColor( Color.blue );
    g.fillOval( 0, 0, 100, 100 );

    g.dispose();

    return new ImageIcon( img );
  }
}

mfg Beni
 

joschika77

Bekanntes Mitglied
Nein kann ich nicht.
Habe mit System.out.println(bild);
den Pfad.Der stimmt.Nun weiß ich nich ob er das Bild lädt.
Wie kann ich das überprüfen?
Gruß Ronn
 
B

Beni

Gast
Einfach: Höhe und Breite überprüfen, wenn die 0 sind...
Komplizierter: getImageLoadStatus() (sollte = MediaTracker.COMPLETE sein)
Aufwendig: Das Bild durch ein anderes ersetzen, welches sicher geladen wird (so was, wie dieses "createImage", welches im Code oben steht).

mfg Beni
 

joschika77

Bekanntes Mitglied
Habe jetzt System.out.println(bild.getImageLoadStatus()); mal probiert.
ER gibt 4 und dann nochmal 4 aus.
Hä????

Gruß Ronn
 
B

Beni

Gast
java.awt.MediaTracker
public static final int ABORTED =2;
public static final int COMPLETE =8;
public static final int ERRORED =4;
public static final int LOADING =1;

Frage: bmp, wird dieses Format überhaupt verarbeitet? (würde mal auf nein tippen).
Versuchs doch mal mit einem gif, jpg oder png-Bild
 

joschika77

Bekanntes Mitglied
Jo Danke.
Hab den Fehler!
Der kam mit *.bmb nicht klar.
Habs in *.gif umgewandelt und siehe da.
So ein Scheiß.Und ich suche und suche.

Ok Danke nochmal.

MfG Ronn
 
U

ugh_bough

Gast
weiß jemand wie das mit einem jwindow geht?
wie kann ich denn ein hintergrundbild in ein jwindow zeichnen?

dank
 
U

ugh_bough

Gast
hat sich erledigt. für alle, die es wissen wollen
Code:
import java.awt.*;
import javax.swing.*;

public class StartUpWindow extends JWindow {
    
    Image image;
    
    public StartUpWindow() {
        ImageIcon icon = new ImageIcon("images/kyle.jpg");
        image = icon.getImage();
        
        this.setSize(icon.getIconWidth(), icon.getIconHeight());
        
        this.setVisible(true);
    }

    public static void main(String[] args) {
        StartUpWindow suw = new StartUpWindow();
    }
    
    public void paint(Graphics g) {
        g.drawImage(image, 0, 0, this);
    }
}

location auf dem bildschirm ist noch nicht eingestellt
 
B

Beni

Gast
Wenn du noch Knöpfe etc. haben willst: Nimm ein JPanel, überschreib paintComponent( Graphics g ), und füge die Buttons danach diesem JPanel zu.

mfg Beni
 
U

ugh_bough

Gast
paintComponent wird dann aber genauso überschrieben wie die paint methode oben? oder? muss dann auch noch der aufruf zum zeichnen der innenliegenden komponenten von hand gemacht werden?
 
B

Beni

Gast
Bei den JComponents ist es so: die paint-Methode ruft zuerst "paintComponent", danach "paintChildren" auf.
Du musst nichts weiter aufrufen (ausser drawImage).
 
U

ugh_bough

Gast
aber man kann doch auch einfach bei dem window einen layoutmanager einstellen und so neue komponenten einfügen
 
B

Beni

Gast
Aber zwischen einem JWindow und den Buttons liegen noch ein RootPane und ein ContentPane.
Unter Umständen siehst du nur grau.

Auch ist die Methode mit einem JPanel praktischer: wenn Du mal ein Frame anstelle eines Windows verwenden willst, oder das Bild nur einen Teil füllen soll, ...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Applet drawImage gibt falsches bild aus Tools - Maven, Gradle, Ant & mehr 6
N Bild schieben via Drag 'n Drop ist zu schnell! Tools - Maven, Gradle, Ant & mehr 6
G Bild wird in Applet nicht angezeigt! Tools - Maven, Gradle, Ant & mehr 6
C Mein Applet zeigt mein Bild im Internet nicht an Tools - Maven, Gradle, Ant & mehr 2
H Borderlayout und Bild in Applet einfügen Tools - Maven, Gradle, Ant & mehr 4
F Bild speichern Tools - Maven, Gradle, Ant & mehr 4
K Applet mit mehreren Paketen und Bild/Ton-Ordnern in Browser Tools - Maven, Gradle, Ant & mehr 2
U Live-Bild wird im Browser nicht aktualisiert Tools - Maven, Gradle, Ant & mehr 21
G bild öffnen mit BufferedImage Tools - Maven, Gradle, Ant & mehr 4
D Runnable JApplet mit Bild/Ovals "übermalt" Buttons Tools - Maven, Gradle, Ant & mehr 6
F Warum wird das Bild nicht angezeigt? Tools - Maven, Gradle, Ant & mehr 9
F Bild über Applet aussuchen und auf Serverladen Tools - Maven, Gradle, Ant & mehr 14
K Bild auf JButton in Applet, JButton wir aber net angezeigt? Tools - Maven, Gradle, Ant & mehr 7
S mouseEntered mit einem Bild im Applet Tools - Maven, Gradle, Ant & mehr 17
M Applet soll Bild übertragen Tools - Maven, Gradle, Ant & mehr 9
F Ein Bild in einem Applet anzeigen? Tools - Maven, Gradle, Ant & mehr 2
J Bild in Array einlesen Tools - Maven, Gradle, Ant & mehr 13
T Mit Applet Bild von einer anderen HP darstellen Tools - Maven, Gradle, Ant & mehr 28
S Access Denied beim Bild laden Tools - Maven, Gradle, Ant & mehr 7
G Bild in einem TextField oder TextArea? Tools - Maven, Gradle, Ant & mehr 3
K Java Lade - Bild ändern Tools - Maven, Gradle, Ant & mehr 9
D sich bewegendes bild + timer Tools - Maven, Gradle, Ant & mehr 6
B Bild Tools - Maven, Gradle, Ant & mehr 2
G Bild im Applet laden und ausgeben Tools - Maven, Gradle, Ant & mehr 2
K Bild (jpg) in einem JApplet Tools - Maven, Gradle, Ant & mehr 2
J Screenshot to Form / Clipboard Bild übertragen Tools - Maven, Gradle, Ant & mehr 2
Z java-puzzel lädt bild nicht Tools - Maven, Gradle, Ant & mehr 3
S Problem: Bild im Applet wird 3-4 Mal geladen Tools - Maven, Gradle, Ant & mehr 5
D Im Hintergrund laden Tools - Maven, Gradle, Ant & mehr 5
Y applet löscht den hintergrund auch mit doppelpufferung Tools - Maven, Gradle, Ant & mehr 3
N Hintergrund auf Panel! Tools - Maven, Gradle, Ant & mehr 5
T Transparenter Hintergrund von Panels Tools - Maven, Gradle, Ant & mehr 9

Ähnliche Java Themen

Neue Themen


Oben