簡體   English   中英

我需要幫助,使用Jbutton ActionListener在Java中在屏幕上移動圖像圖標

[英]I Need help to move a Image Icon across the screen in java with a Jbutton ActionListener

我正在做一個類似於游戲Unblockme的程序,您必須在其中移動塊並將紅色的塊移到另一側才能移動到下一個級別。 現在我加載程序,單擊一級,然后我可以為Redblock選擇單選按鈕,當我嘗試單擊右移Jbutton時,我在動作偵聽器中對其進行了編程以使其移動,但我沒有嘗試像3天,即時消息仍然卡住。 謝謝,我將包括用於加載和繪制圖像圖標的加載圖片類,以及帶有actionlistener和其他所有內容的labelframe。 我發布的第一個類是labelframe,然后是加載圖片類。

    import javax.imageio.ImageIO;
    import javax.swing.*;
    import java.awt.image.BufferedImage;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;

    public  class LabelFrame extends JFrame{


public LabelFrame( ) 
{
    super("The Structures Game");



    setSize(475,400);
    setLocation(350,200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);



    JMenuBar menubar = new JMenuBar();
    setJMenuBar(menubar);

    JMenu Change = new JMenu("Pick a Level");
    menubar.add(Change);
        JMenu Move = new JMenu("Move keys");
    menubar.add(Move);

    JMenu Options = new JMenu("Options");
    menubar.add(Options);

    JMenu About = new JMenu("About");
    menubar.add(About);

    JMenu Select = new JMenu("Select");
    menubar.add(Select);



    final JMenuItem black = new JMenuItem("Black BackGround");
    Options.add(black);

    final JMenuItem blue = new JMenuItem("Blue BackGround");
    Options.add(blue);

    final JMenuItem yellow = new JMenuItem("Yellow BackGround");
    Options.add(yellow);

    final JMenuItem green = new JMenuItem("Green BackGround");
    Options.add(green);

    final JMenuItem white = new JMenuItem("White BackGround");
    Options.add(white);

    JMenuItem info = new JMenuItem("infomation");
    About.add(info);

    JMenuItem Level1 = new JMenuItem("Level 1");
    Change.add(Level1);


    JMenuItem Level2 = new JMenuItem("Level 2");
    Change.add(Level2);

    JMenuItem Level3 = new JMenuItem("Level 3");
    Change.add(Level3);

    JMenuItem Level4 = new JMenuItem("Level 4");
    Change.add(Level4);

    JMenuItem Level5 = new JMenuItem("Level 5");
    Change.add(Level5);
    final JRadioButton redBlock = new JRadioButton("redblock");
    final JRadioButton blockverticala = new JRadioButton("2blockvertical");
    final JRadioButton blockverticalb = new JRadioButton("4blockvertical");
    final JRadioButton blockhorizontal = new JRadioButton("2blcokhorizontal");

    final JButton moveleft = new JButton("Left");
    final JButton moveright = new JButton("Right");
    final JButton moveup = new JButton("Up");
    final JButton movedown = new JButton("Down");



    Select.add(redBlock);
    Select.add(blockverticala);
    Select.add(blockverticalb);
    Select.add(blockhorizontal);
    Move.add(moveleft);
    Move.add(moveright);
    Move.add(moveup);
    Move.add(movedown);

    Level1.addActionListener(new ActionListener()
    {   
        public void actionPerformed(ActionEvent event)
        {
            final LoadingPictures levelpics = new LoadingPictures(1);

            add(levelpics);
            repaint();


            if(redBlock.isSelected())
            {
                moveright.addActionListener(new ActionListener()
                {   
                    public void actionPerformed(ActionEvent right)
                    {
                        //if(right.getSource() = moveright)
                        LoadingPictures.top+=50;

                        levelpics.repaint();
                    }});
            }

            else if(blockverticala.isSelected())
            {
                moveright.addActionListener(new ActionListener()
                {   
                    public void actionPerformed(ActionEvent right)
                    {

                    }});
            }

            else if(blockverticalb.isSelected())
            {
                moveright.addActionListener(new ActionListener()
                {   
                    public void actionPerformed(ActionEvent right)
                    {

                    }});
            }
            if(blockhorizontal.isSelected())
            {
                moveright.addActionListener(new ActionListener()
                {   
                    public void actionPerformed(ActionEvent right)
                    {

                    }});
            }


            black.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    levelpics.setBackground(Color.black);

                }});
            blue.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    levelpics.setBackground(Color.blue);

                }});
            yellow.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    levelpics.setBackground(Color.yellow);

                }});
            green.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    levelpics.setBackground(Color.green);

                }});
            white.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    levelpics.setBackground(Color.white);

                }});


            }


    });






    info.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent event)
        {   
            JOptionPane.showMessageDialog(null,"•This is our Final project for computer programming 3 \n" +
                                            "•Created by Jon Eagle and Nick Bonaventure\n•Based off of the " +
                                            "game by KIRA GAmes called UnBlock Me");
                        }});


}

}

    import java.awt.BorderLayout;
    import java.awt.Graphics;

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


    public class LoadingPictures extends JPanel{

ImageIcon block = new ImageIcon ("2block.jpg");
ImageIcon block4vertical = new ImageIcon("4block.jpg");
ImageIcon redblock = new ImageIcon("redblockhorizontal.jpg");

static int top = 0;
static int topleft = 200;
private int j;
public LoadingPictures(int i)
{
    super();
    j = i;



}
public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    if (j == 1)
    {

        g.drawImage(block4vertical.getImage(),300,200,this);
        g.drawImage(block.getImage(),200,200,this);
        g.drawImage(redblock.getImage(),top,topleft,this);
    }
}




    }

示例使用按鈕或鍵盤移動一條線。 您可以在paintComponent()調用drawImage()而不是drawLine() 基本步驟是在每次位置更改后調用repaint()

除了垃圾桶示例,您還可以簽出

動畫雖然有點偏離主題,但卻是一個復雜的主題。 有很多非常好的基於Swing的開源動畫庫,可以使您的生活更輕松...

兩者都是優秀的,並且基於相似的理論,但是做的事情卻不同。 您將必須確定它們是否適合您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM