Swing Dynamisches Bild

T

Tomate_Salat

Gast
Heyho,

Ich beschäftige mich gerade verstärkt mit Animation und es tauchen verstärkt Probleme auf :-! . Ich will ein Panel erstellen, welches ein Hintergrundbild hat, dass sich immer der Größe des Panels anpasst. Wollte das ganze mit überschriebener [c]paintComponent();[/c] lösen, aber da bekam ich mein Bild nicht einmal angezeigt. Jetzt bin ich auf ein [c]JLabel[/c] umgestiegen. Mein Problem: das ist krottenlangsam und dem Endbenutzer nicht zumutbar. Hier mal mein Ansatz:

Java:
public class FlyPanel 
	extends JPanel
{
	private static final long serialVersionUID = 1L;		
	
	private Image IMAGE;
	private JLabel ICON;
	
	public FlyPanel(URL url) 
	{
		super();

		setDoubleBuffered(true);
		setOpaque(true);
		setLayout(null);

		loadIMG(url);
		ICON  = new JLabel();
		ICON.setLocation(0, 0);

		add(ICON);
		addComponentListener(stateListener);
	}
		
	public void loadIMG(URL url)
	{
        try {
            IMAGE = ImageIO.read(url);
        } catch (IOException e) {
            e.printStackTrace();
        }
	}
	
	private void configurateIcon()
	{
        ICON.setSize( getSize() );
	    if(IMAGE != null)
	    {
    	    ICON.setIcon(new ImageIcon(IMAGE.getScaledInstance(getWidth(), getHeight(), Image.SCALE_SMOOTH)));
	    }
	}
	
	private ComponentListener stateListener    = new ComponentListener() 
	{
        
        @Override
        public void componentShown(ComponentEvent e) {
            if(ICON != null)
                configurateIcon();
            
        }
        
        @Override
        public void componentResized(ComponentEvent e) {
            if(ICON != null)
                configurateIcon();
            
        }
        
        @Override
        public void componentMoved(ComponentEvent e) {
            
        }
        
        @Override
        public void componentHidden(ComponentEvent e) {
            
        }
    };
}

Hoffe Ihr könnt mir helfen.

Mit freundlichen Grüßen

Tomate_Salat
 

SuperSeppel13

Bekanntes Mitglied
Wiso sollte es nicht funktnionieren, die paintComponent-Methode von JPanel zu überschreiben und dann immer das Hintergrundbild auf die gesamte Größe des JPanels zu zeichnen?!
Hab sowas schon gemacht. Klappt auf jeden Fall. Da muss dir irgendein Fehler unterlaufen sein.
Das mit dem JLabel ist auf jeden Fall viel zu umständlich.
 
T

Tomate_Salat

Gast
Geb dir da auf jeden Fall in jeder Beziehung recht. Ich werd es auf jeden Fall nochmals versuchen, wobei ich nicht allzugroßer Hoffnung in, dass ichs hinbekomme, wie gesagt: im Bereich Zeichnung habe ich noch nicht viel gemacht und bin leider zieml. blutiger Anfänger auf dem Gebiet. Leider setzt mein aktuelles Projekt zu 80% darauf *kopf auf tisch hau*

Edit: bringt mir das [c]setDoubleBuffered(true);[/c] iwas? Habe mal gelesen das sei veraltet und man sollte [c]bufferStrategie[/c] nutzen, aber wie ich das in einem JPanel verwende.

Edit2: Immerhin bekomme ich das Bild jz angezeigt, aber die Größenanpassung des Bildes ist mir noch viel zu langsam.

Java:
@Override
	protected void paintComponent(Graphics g) 
	{	    
	    super.paintComponent(g);
	    paintBackgroundImage(g);
	}
	
	private void paintBackgroundImage(Graphics g)
	{
	    g.drawImage(IMAGE.getScaledInstance(getWidth(), getHeight(), Image.SCALE_SMOOTH), 0, 0, null);
	}

Das bild ist 144kb und 1000x1000 Pixel groß. Die Klasse sollte im Stande sein, ein solches Bild neu berechnen zu können. Das jetztige ist nur ein Testbild und und an die Auflösung ist vorgegeben.
 
Zuletzt bearbeitet von einem Moderator:

SuperSeppel13

Bekanntes Mitglied
probier mal das hier:
Java:
class ImagePanel extends JPanel{

    private BufferedImage img;

    public ImagePanel(File src){
        super();

        try{
            img = ImageIO.read(src);
        } catch (IOException e){ e.printStackTrace(); }
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
    }
}

also bei mir geht's.
 
T

Tomate_Salat

Gast
Ja SUPER. Ich habs ja komplett unnötig kompliziert gemacht....ja funktioniert perfekt. Vielen Dank ;-)
 
T

Tomate_Salat

Gast
Nein bei mir ist das IMMER so. Ich suche mir immer den Kompliziertmöglichsten weg, warum auch immer. Beispiel:
Mein MainBoard war kaputt, mein Kumpel hat sich ein neues gekauft und ich habe sein altes (immernoch gut) übernommen. Also bei ihm ausgebaut, bei mir eingebaut. Nichts funktionierte. Der rechner startet einfach nciht. Also mein graka etc. raus und seine teile rein bei mir...geht nix. Mein Netzteil raus, seins rein ... geht nix. Das MB hat einige Knöpfe (auf dem MB wohl gemerkt!). Ich wollte wissen, wofür die sind. Er dann: "Ja einen zum dirket anschalten, einen zum direkt ressetten und was der dahinten macht, keine Ahnung aber der ist nicht wichtig". Nach ner stunde haben wirs aufgegeben und sind eine runde mit dem Trecker gefahren. Danach wieder dran gesetzt und natürlich keine lösung gefunden. Dann meinte ich: "so ich will wissen was der verdammte 3te Knopf macht". Kurz und knapp: mit dem kann man das MB deaktivieren so dass der Rechner nicht mehr startet....

Das war aber zu einfach gewesen, als das wir da 3h früher mal draufgedrückt hätten
 

SuperSeppel13

Bekanntes Mitglied
Tja, so kann's gehen...
Ich tu mich auch manchmal schwer, einfach genug zu denken...

Du könntest aber das Thema noch als erledigt markieren, falls dein Problem nun endgültig gelöst sein sollte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
D Swing Dynamisches Dialog UI AWT, Swing, JavaFX & SWT 8
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
T dynamisches Koordinatenkreuz mit scalierung AWT, Swing, JavaFX & SWT 7
C Scollpane an dynamisches GridLayout anpassen? AWT, Swing, JavaFX & SWT 3
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
N Swing Dynamisches Verhalten bei Änderung Fenstergröße AWT, Swing, JavaFX & SWT 6
trash Dynamisches Interface AWT, Swing, JavaFX & SWT 6
H LayoutManager Dynamisches Layout AWT, Swing, JavaFX & SWT 3
T RCP-SWT dynamisches ScrolledComposite AWT, Swing, JavaFX & SWT 2
B dynamisches Spektrogramm in Java-Webanwendung AWT, Swing, JavaFX & SWT 3
G LookAndFeel Dynamisches Einlesen von LookAndFeels - NullPointerException AWT, Swing, JavaFX & SWT 4
M Dynamisches generieren und ausrichten von Komponenten AWT, Swing, JavaFX & SWT 11
T Dynamisches hinzufügen und entfernen von Bildern AWT, Swing, JavaFX & SWT 3
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
J Dynamisches füllen von GridBagLayout: Größe der Komponenten AWT, Swing, JavaFX & SWT 4
S GUI, dynamisches Wechseln von JPanels in einem JFrame AWT, Swing, JavaFX & SWT 2
L Dynamisches Erzeugen eines Button AWT, Swing, JavaFX & SWT 2
M Schwieriges Label - Font - Problem "Dynamisches Label&a AWT, Swing, JavaFX & SWT 7
C Dynamisches Zuweisen von Daten an eine JTable zur Laufzeit AWT, Swing, JavaFX & SWT 4
C ActionListener für dynamisches Menü AWT, Swing, JavaFX & SWT 8
H JavaFX Background-Bild wird in .exe nicht angezeigt AWT, Swing, JavaFX & SWT 6
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
M Bewegtes Bild im BorderLayout.CENTER AWT, Swing, JavaFX & SWT 6
C Falschfarbenbild (lineare Grauwertspreizung)aus Grauwert-Bild erstellen AWT, Swing, JavaFX & SWT 15
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
S Bild neu skalieren - Bild in Bild speichern? AWT, Swing, JavaFX & SWT 6
N Bild Drehen AWT, Swing, JavaFX & SWT 1
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
L Bild nicht in der Mitte AWT, Swing, JavaFX & SWT 16
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
J Swing Bild in Button AWT, Swing, JavaFX & SWT 11
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
T JavaFX Bild in Tabellenzelle AWT, Swing, JavaFX & SWT 2
Ksanatos Swing Bild (.jpg) einlesen und per Button wechseln AWT, Swing, JavaFX & SWT 9
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
MaxG. Swing Bild Button AWT, Swing, JavaFX & SWT 7
P Swing Bild Skallieren AWT, Swing, JavaFX & SWT 1
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
A Swing Bild wird nicht mehr geladen AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
S Bild mit ImageIcon auf GUI verkleinern AWT, Swing, JavaFX & SWT 3
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
F Gezeichnetes als bild speichern AWT, Swing, JavaFX & SWT 4
B 2D-Grafik Bild farblich filtern AWT, Swing, JavaFX & SWT 2
B JavaFX ImageView neues Bild zuweisen AWT, Swing, JavaFX & SWT 19
A 2D-Grafik Bild wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 24
K Bild in JFrame AWT, Swing, JavaFX & SWT 2
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
B Swing Unterteiltes JFrame mit Bild in der Mitte AWT, Swing, JavaFX & SWT 4
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
Z Bildervorschau, MouseDragged das Bild verschieben AWT, Swing, JavaFX & SWT 1
M JavaFX Ein Bild ohne Rahmen fällt runter? AWT, Swing, JavaFX & SWT 2
G Anonyme Instanz von JXImageView erstellen und mit Bild initialisieren AWT, Swing, JavaFX & SWT 7
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
M JavaFX - Bild in Jar einbinden, sodass es auch außerhalb der IDE geladen wird. AWT, Swing, JavaFX & SWT 2
M Bild Beschreibung mit ImageIO speichern AWT, Swing, JavaFX & SWT 1
M "ImageIO.read()" liest Bild nicht richtig ein AWT, Swing, JavaFX & SWT 3
I Swing JLabel Bild für 1sec anzeigen lassen AWT, Swing, JavaFX & SWT 13
K Bild in Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
C GUI öfters durchlaufen und hinterher Bild speichern AWT, Swing, JavaFX & SWT 1
M AWT Farben in Bild ersetzen AWT, Swing, JavaFX & SWT 11
E JavaFX Bild einfügen AWT, Swing, JavaFX & SWT 6
G paintComponents zerstückelt Bild AWT, Swing, JavaFX & SWT 0
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
1 Textfield: jede Buchstabe ein Bild AWT, Swing, JavaFX & SWT 2
C Bild Koordinaten AWT, Swing, JavaFX & SWT 6
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
M Bild in JPanel mit Maus einfügen AWT, Swing, JavaFX & SWT 0
B JPanel und png-Bild AWT, Swing, JavaFX & SWT 2
B Swing Bild von Webseite herunterladen, diese dann in JList anzeigen. AWT, Swing, JavaFX & SWT 1
O 2D-Grafik Bild abgeschnitten nach Rotation mit Affine Transform und Hintergrund Schwarz AWT, Swing, JavaFX & SWT 8
A Swing Malprogramm Bild speichern? AWT, Swing, JavaFX & SWT 9
U Bild innerhalb hatml code anzeigen AWT, Swing, JavaFX & SWT 5
Y JavaFX Bild speichern und Pfad dazu abspeichern AWT, Swing, JavaFX & SWT 2
S Geladenes Bild wird nicht in JPanel angezeigt AWT, Swing, JavaFX & SWT 7
L 2D-Grafik Bild in Richtung Maus drehen AWT, Swing, JavaFX & SWT 18
C Bild in JFrame AWT, Swing, JavaFX & SWT 8
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben