/ / Hai bisogno di aiuto Disegnare un'immagine in Java - java, image, swing, timer, paintcomponent

Hai bisogno di aiuto per disegnare un'immagine in Java: java, image, swing, timer, paintcomponent

quello che sto cercando di fare è avere una visualizzazione dell'immaginesullo schermo per x quantità di secondi e poi scompare, quindi ne ho un'altra disegnata al suo posto, ho la prima immagine da visualizzare ma la seconda non funziona. Nota: posso disegnare forme ma non l'immagine

package com.mainwindow.draw;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class MainWindow extends JPanel {

Image Logo;
Image Menu;
String LogoSource = "Gimijes.png";
String menuEntity = "Menu.png";
Boolean draw = true;

static Boolean timeout = false;

public MainWindow() {
ImageIcon ii = new ImageIcon(this.getClass().getResource(LogoSource));
Logo = ii.getImage();
ImageIcon mii = new ImageIcon(this.getClass().getResource(menuEntity));
Menu = mii.getImage();
Timer timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
draw = false;
timeout = true;
repaint();

}
});

timer.start();
};

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
if (draw == true) {
//draw Gimijes.png (on screen for 5 seconds)
g2.drawImage(Logo, 0, 0, null);
}
if (timeout  == true) {
g2.drawImage(Menu, getWidth(), getHeight(), null);

}
}
}

Se qualcuno sapesse come farlo funzionare, sarei davvero grato.

risposte:

1 per risposta № 1

Il problema era con la posizione di una nuova immagine. Se si desidera sovrascrivere l'immagine esistente, utilizzare la stessa coordinata (posizione [0,0]).

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
if (draw == true) {
// draw Gimijes.png (on screen for 5 seconds)
g2.drawImage(Logo, 0, 0, null);
}
if (timeout == true) {
g2.drawImage(Menu, 0, 0, null);
}
}