在java中切换imageIcon? [英] Switch imageIcon in java?

查看:168
本文介绍了在java中切换imageIcon?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有许多在窗口中移动的平面(线程),我想根据平面的方向切换ImageIcon。
例如:如果一架飞机向右移动,则该飞机的imageIcon是正确的,然后飞机向左移动,交换该飞机的imageIcon。
如何在方法paintComponent中执行此操作?
抱歉我的英文不好。

I have many planes(threads) that move in window, and I want switch the ImageIcon according to the direction of the plane. For example: if a plane goes to the right, the imageIcon of the plane is right and then plane goes to the left, exchange the imageIcon for the plane is left. How can I do that in method paintComponent? Sorry for my bad english.

推荐答案

如果你正在寻找逻辑上的东西,那么这里有一个小例子,但您可能需要根据需要对其进行修改。

If you are looking for a logic thingy, then a small example is here, though you might have to modify it for your needs.

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.swing.*;

public class FlyingAeroplane
{
    private Animation animation;
    private Timer timer;
    private ActionListener timerAction = new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent ae)
        {
            animation.setValues();
        }
    };

    private void displayGUI()
    {
        JFrame frame = new JFrame("Aeroplane Flying");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        animation = new Animation();
        frame.setContentPane(animation);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
        timer = new Timer(100, timerAction);
        timer.start();
    }

    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                new FlyingAeroplane().displayGUI();
            }
        });
    }
}

class Animation extends JPanel
{
    private final int HEIGHT = 150;
    private final int WIDTH = 200;
    private int x;
    private int y;
    private ImageIcon image;
    private boolean flag;
    private Random random;

    public Animation()
    {
        x = 0;
        y = 0;
        image = new ImageIcon(getClass().getResource("/image/aeroplaneright.jpeg"));
        flag = true;
        random = new Random();
    }

    public void setValues()
    {
        x = getXOfImage();
        y = random.nextInt(70);
        repaint();
    }

    private int getXOfImage()
    {
        if (flag)
        {           
            if ((x + image.getIconWidth()) == WIDTH)
            {
                flag = false;
                x--;
                return x;
            }
            x++;
            image = new ImageIcon(getClass().getResource("/image/aeroplaneright.jpeg"));
        }
        else if (!flag)
        {
            if (x == 0)
            {
                flag = true;
                x++;
                return x;
            }
            x--;
            image = new ImageIcon(getClass().getResource("/image/aeroplaneleft.jpeg"));
        }
        return x;
    }

    @Override
    public Dimension getPreferredSize()
    {
        return (new Dimension(WIDTH, HEIGHT));
    }

    @Override
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawImage(image.getImage(), x, y, this);
    }
}

使用的图像:


这篇关于在java中切换imageIcon?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆