java - 需要帮助用 Java 绘制图像

标签 java image swing timer paintcomponent

我想做的是让一个图像在屏幕上显示 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/

相关文章:

java - 如何真正将 JFrame 中的对象居中?

java - 如何创建没有数据绑定(bind)的 Java Web 服务客户端?

c# - System.Drawing.Image.FromStream() 内存不足异常

django - 在 django-webodt 中使用可变图像

java - 无法设置 JTextField 中的字符数限制

java - Android Studio 启动失败,出现 "Exception in thread "main"java.lang.NoClassDefFoundError : javax. swing.UIManager"

java - 在 JScrollPane 中调用 setViewportView 后避免自动滚动到底部

java - 不幸的是 MyApp 已经停止。我该如何解决这个问题?

java - 在忽略大小写的情况下使用正则表达式匹配字符串

java - 如何将下载的图像存储在缓存中