我想做的是让一个图像在屏幕上显示 x 秒,然后消失,然后在其位置绘制另一个图像,我已经显示了第一个图像,但第二个图像不起作用。 注意:我可以绘制形状,但不能绘制图像
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);
}
}
}
如果有人知道如何让它发挥作用,我将非常感激。
最佳答案
问题出在新图像的位置上。如果您想覆盖现有图像,请使用相同的坐标(位置 [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);
}
}
关于java - 需要帮助用 Java 绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414217/