kostenloser Webspace werbefrei: lima-city


Java Draw Image repaint

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    q*****4

    Hallo,

    ich habe das Problem, dass mein gezeichnetes Bild immer wieder verschwindet. So z. B. wenn die Anwendung minimiert wird.

    Hat jemand von euch einen Tipp für mich wie ich das behebe ?

    Klasse, die das Image vorbereitet
    package SongPlayer;
    
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.Toolkit;
    import java.awt.image.ImageObserver;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class CLS_Cover_View implements ITF_Informed_by_Songchange{
    	private Image cover;
    	private CLS_ActionDistributor actdist;
    	private String img_filename;
    	
    	public CLS_Cover_View(CLS_ActionDistributor actdist){
    		this.actdist = actdist;
    		actdist.add_Component_Informed_by_Songchange(this);
    		img_filename="no_cover.jpg";
    		this.cover = Toolkit.getDefaultToolkit().getImage(img_filename);
    	}
    	
    	public void query_img_via_song_pk_id(int pk_id){
    		get_filename_for_song_pkid(String.valueOf(pk_id));
    		this.cover = Toolkit.getDefaultToolkit().getImage(img_filename);
    		
    	}
    	
    	
    	public void draw_img(Graphics g, int x, int y, int w, int h, ImageObserver imgob){
    		Graphics2D g2 = (Graphics2D)g;
    		RenderingHints xxx = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    		xxx.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    		xxx.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    		xxx.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    		xxx.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    		g2.addRenderingHints(xxx);
    		g2.drawImage(this.cover ,x, y, w, h,imgob);
    	}
    	
    	private void get_filename_for_song_pkid(String pk_id){
                     // ... Code here
    	}
    
    	@Override
    	public void current_song_changed(int newPkSongId) {
    		query_img_via_song_pk_id(newPkSongId);
    	}
    	
    }


    In der Gui Klasse wird ein JFrame erzeugt und die Klasse oben instanziert. Dann wird so bei mir gezeichnet

    public void paint(Graphics g){
    		super.paint(g);
    		this.cls_cover_view.draw_img(g, 5, this.getHeight() - 180, 170, 170, this);
    	}
    	public void update(Graphics g){
    		paint(g);
    	}


    Danke schon mal im Voraus für die Tipps
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Moin,

    versuch mal mit paintComponent zu zeichnen anstatt mit paint().
    Und dementsprechend auch super.paintComponent() aufrufen.

    Sollte eigentlich Abhilfe geschaffen, da ich meine Probleme mit dem Zeichnen so beheben konnte.

    Gruß,
    Pawnee
  4. Autor dieses Themas

    q*****4

    Hallo,

    danke für den Tipp, das werde ich gleich mal ausprobieren und noch Bescheid geben ob
    das Abhilfe schafft.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!