java - 鼠标 ActionListener 和鼠标点击 (MouseEvent e)

标签 java swing mouseevent mouselistener actionevent

出于显而易见的原因,我在我的游戏中实现了 MouseListener;用户需要能够点击看板。

问题不在于单击面板本身,而在于重置按钮 resetBoard 和鼠标监听器。当我单击按钮时,电路板发生变化,但是当单击被释放时,电路板再次发生变化。考虑到我的所有操作都在 public void mouseClicked(MouseEvent e) block 下,我找不到任何地方可以解释为什么它在按下和释放时都会发生变化。我有空的 mouseReleasedmouseEnteredmouseExitedmousePressed

基本上,有人能帮我理解为什么当只有 mouseClicked 不为空时,板会在鼠标按下和向上(以相同的 Action )时重置。

哦,我知道我不需要所有这些导入,只是我确实曾经使用过它们,但我忘了将它们取出来,因为我对当前的问题太着迷了。

对于重复的内容感到抱歉...以及其中的所有内容。这是我目前知道的唯一方法。

谢谢!

public class Blox implements ActionListener {

    private final String gameVersion = "Blox - v1.0.2";

    private ImageIcon purpleBlock = new ImageIcon();
    private ImageIcon redBlock = new ImageIcon();
    private ImageIcon blueBlock = new ImageIcon();
    private ImageIcon greenBlock = new ImageIcon();
    private ImageIcon closeImage = new ImageIcon();

    private JButton block1 = new JButton();
    private JButton block2 = new JButton();
    private JButton block3 = new JButton();
    private JButton block4 = new JButton();
    private JButton block5 = new JButton();
    private JButton block6 = new JButton();
    private JButton block7 = new JButton();

    private JButton block8 = new JButton();
    private JButton block9 = new JButton();
    private JButton block10 = new JButton();
    private JButton block11 = new JButton();
    private JButton block12 = new JButton();
    private JButton block13 = new JButton();
    private JButton block14 = new JButton();

    private JButton block15 = new JButton();
    private JButton block16 = new JButton();
    private JButton block17 = new JButton();
    private JButton block18 = new JButton();
    private JButton block19 = new JButton();
    private JButton block20 = new JButton();
    private JButton block21 = new JButton();

    private JButton block22 = new JButton();
    private JButton block23 = new JButton();
    private JButton block24 = new JButton();
    private JButton block25 = new JButton();
    private JButton block26 = new JButton();
    private JButton block27 = new JButton();
    private JButton block28 = new JButton();

    private JButton block29 = new JButton();
    private JButton block30 = new JButton();
    private JButton block31 = new JButton();
    private JButton block32 = new JButton();
    private JButton block33 = new JButton();
    private JButton block34 = new JButton();
    private JButton block35 = new JButton();

    private JButton block36 = new JButton();
    private JButton block37 = new JButton();
    private JButton block38 = new JButton();
    private JButton block39 = new JButton();
    private JButton block40 = new JButton();
    private JButton block41 = new JButton();
    private JButton block42 = new JButton();

    private JButton block43 = new JButton();
    private JButton block44 = new JButton();
    private JButton block45 = new JButton();
    private JButton block46 = new JButton();
    private JButton block47 = new JButton();
    private JButton block48 = new JButton();
    private JButton block49 = new JButton();

    // Error console init
    private JLabel errorMessage = new JLabel();
    private JPanel errorBg = new JPanel();
    private JButton closeError = new JButton();

    // Score/UI Inits
    private JButton resetBoard = new JButton("Reset Board");

    /**
     *  700 x 480 Frame Size
     *  Sets Up and displays initial scene.
     *
     */
    private void game() {

        // Initialize mainFrame
        JFrame mainFrame = new JFrame(gameVersion);
        Dimension minSize = new Dimension(700,480);
        mainFrame.setMinimumSize(minSize);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setLayout(null);
        mainFrame.setResizable(false);
        try {
            mainFrame.setContentPane(new JLabel(new ImageIcon(
                ImageIO.read(new File("bggrad.jpg")))));
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Setup Block Images
        try {
            purpleBlock.setImage(ImageIO.read(new File("purpleBlock.png")));
            redBlock.setImage(ImageIO.read(new File("redBlock.png")));
            blueBlock.setImage(ImageIO.read(new File("blueBlock.png")));
            greenBlock.setImage(ImageIO.read(new File("greenBlock.png")));
            closeImage.setImage(ImageIO.read(new File("close.jpg")));
        } catch (IOException e) {
            e.printStackTrace();
        }   

        // Sets up error message panel
        // Only displayed if error occurs on ActionListener
        errorMessage.setText("");
        errorMessage.setForeground(Color.black);
        Font newLabelFont = new Font(errorMessage.getFont().getName(),
            Font.BOLD,errorMessage.getFont().getSize());
        errorMessage.setFont(newLabelFont); 
        closeError.setIcon(closeImage); 
        closeError.setBounds(0,0,24,24);
        errorBg.setBounds(0,430,700,30);
        errorBg.setBackground(Color.lightGray);
        errorBg.add(closeError);
        errorBg.add(errorMessage);
        errorBg.setVisible(false);

        // Sets up Score/UI Portions of Screen
        resetBoard.setBounds(60,363,175,25);
        resetBoard.setVisible(true);
        resetBoard.addActionListener(this);

        // Randomize and add Images to each JButton
        gameReset();

        // Add Listeners to each block
        block1.addActionListener(this);
        block2.addActionListener(this);
        block3.addActionListener(this);
        block4.addActionListener(this);
        block5.addActionListener(this);
        block6.addActionListener(this);
        block7.addActionListener(this);

        block8.addActionListener(this);
        block9.addActionListener(this);
        block10.addActionListener(this);
        block11.addActionListener(this);
        block12.addActionListener(this);
        block13.addActionListener(this);
        block14.addActionListener(this);

        block15.addActionListener(this);
        block16.addActionListener(this);
        block17.addActionListener(this);
        block18.addActionListener(this);
        block19.addActionListener(this);
        block20.addActionListener(this);
        block21.addActionListener(this);

        block22.addActionListener(this);
        block23.addActionListener(this);
        block24.addActionListener(this);
        block25.addActionListener(this);
        block26.addActionListener(this);
        block27.addActionListener(this);
        block28.addActionListener(this);

        block29.addActionListener(this);
        block30.addActionListener(this);
        block31.addActionListener(this);
        block32.addActionListener(this);
        block33.addActionListener(this);
        block34.addActionListener(this);
        block35.addActionListener(this);

        block36.addActionListener(this);
        block37.addActionListener(this);
        block38.addActionListener(this);
        block39.addActionListener(this);
        block40.addActionListener(this);
        block41.addActionListener(this);
        block42.addActionListener(this);

        block43.addActionListener(this);
        block44.addActionListener(this);
        block45.addActionListener(this);
        block46.addActionListener(this);
        block47.addActionListener(this);
        block48.addActionListener(this);
        block49.addActionListener(this);


        // Set Block Locations
        block1.setBounds(300,50,50,50);
        block2.setBounds(350,50,50,50);
        block3.setBounds(400,50,50,50);
        block4.setBounds(450,50,50,50);
        block5.setBounds(500,50,50,50);
        block6.setBounds(550,50,50,50);
        block7.setBounds(600,50,50,50);

        block8.setBounds(300,100,50,50);
        block9.setBounds(350,100,50,50);
        block10.setBounds(400,100,50,50);
        block11.setBounds(450,100,50,50);
        block12.setBounds(500,100,50,50);
        block13.setBounds(550,100,50,50);
        block14.setBounds(600,100,50,50);

        block15.setBounds(300,150,50,50);
        block16.setBounds(350,150,50,50);
        block17.setBounds(400,150,50,50);
        block18.setBounds(450,150,50,50);
        block19.setBounds(500,150,50,50);
        block20.setBounds(550,150,50,50);
        block21.setBounds(600,150,50,50);

        block22.setBounds(300,200,50,50);
        block23.setBounds(350,200,50,50);
        block24.setBounds(400,200,50,50);
        block25.setBounds(450,200,50,50);
        block26.setBounds(500,200,50,50);
        block27.setBounds(550,200,50,50);
        block28.setBounds(600,200,50,50);

        block29.setBounds(300,250,50,50);
        block30.setBounds(350,250,50,50);
        block31.setBounds(400,250,50,50);
        block32.setBounds(450,250,50,50);
        block33.setBounds(500,250,50,50);
        block34.setBounds(550,250,50,50);
        block35.setBounds(600,250,50,50);

        block36.setBounds(300,300,50,50);
        block37.setBounds(350,300,50,50);
        block38.setBounds(400,300,50,50);
        block39.setBounds(450,300,50,50);
        block40.setBounds(500,300,50,50);
        block41.setBounds(550,300,50,50);
        block42.setBounds(600,300,50,50);

        block43.setBounds(300,350,50,50);
        block44.setBounds(350,350,50,50);
        block45.setBounds(400,350,50,50);
        block46.setBounds(450,350,50,50);
        block47.setBounds(500,350,50,50);
        block48.setBounds(550,350,50,50);
        block49.setBounds(600,350,50,50);

        // Add blocks to frame
        mainFrame.getContentPane().add(block1);
        mainFrame.getContentPane().add(block2);
        mainFrame.getContentPane().add(block3);
        mainFrame.getContentPane().add(block4);
        mainFrame.getContentPane().add(block5);
        mainFrame.getContentPane().add(block6);
        mainFrame.getContentPane().add(block7);

        mainFrame.getContentPane().add(block8);
        mainFrame.getContentPane().add(block9);
        mainFrame.getContentPane().add(block10);
        mainFrame.getContentPane().add(block11);
        mainFrame.getContentPane().add(block12);
        mainFrame.getContentPane().add(block13);
        mainFrame.getContentPane().add(block14);

        mainFrame.getContentPane().add(block15);
        mainFrame.getContentPane().add(block16);
        mainFrame.getContentPane().add(block17);
        mainFrame.getContentPane().add(block18);
        mainFrame.getContentPane().add(block19);
        mainFrame.getContentPane().add(block20);
        mainFrame.getContentPane().add(block21);

        mainFrame.getContentPane().add(block22);
        mainFrame.getContentPane().add(block23);
        mainFrame.getContentPane().add(block24);
        mainFrame.getContentPane().add(block25);
        mainFrame.getContentPane().add(block26);
        mainFrame.getContentPane().add(block27);
        mainFrame.getContentPane().add(block28);

        mainFrame.getContentPane().add(block29);
        mainFrame.getContentPane().add(block30);
        mainFrame.getContentPane().add(block31);
        mainFrame.getContentPane().add(block32);
        mainFrame.getContentPane().add(block33);
        mainFrame.getContentPane().add(block34);
        mainFrame.getContentPane().add(block35);

        mainFrame.getContentPane().add(block36);
        mainFrame.getContentPane().add(block37);
        mainFrame.getContentPane().add(block38);
        mainFrame.getContentPane().add(block39);
        mainFrame.getContentPane().add(block40);
        mainFrame.getContentPane().add(block41);
        mainFrame.getContentPane().add(block42);

        mainFrame.getContentPane().add(block43);
        mainFrame.getContentPane().add(block44);
        mainFrame.getContentPane().add(block45);
        mainFrame.getContentPane().add(block46);
        mainFrame.getContentPane().add(block47);
        mainFrame.getContentPane().add(block48);
        mainFrame.getContentPane().add(block49);

        mainFrame.getContentPane().add(errorBg);

        mainFrame.getContentPane().add(resetBoard);

        //mainFrame.pack();
        mainFrame.setVisible(true);  
    }


    /**
     *  Checks onClick event for which JButton was clicked
     *  and changes JButton.setIcon() accordingly.
     *
     *  @param  none
     *  @return none 
     *  @see    java.awt.event.*
     *  @see    JButton
     *  @see    setIcon()
     *  @see    getIcon()
     *
     */
    public void actionPerformed(ActionEvent e) {

        if(e.getSource()==resetBoard) {
            System.out.println("Resetting");
            gameReset();
        }

        if(e.getSource()==errorBg || e.getSource()==errorMessage) {
            errorBg.setVisible(false);
        }

        if(e.getSource()==block1) {
            if(block1.getIcon()==purpleBlock) {
                block1.setIcon(blueBlock);
                block2.setIcon(redBlock);
                block8.setIcon(redBlock);
            } else if(block1.getIcon()==blueBlock) {
                block1.setIcon(redBlock);
                block2.setIcon(greenBlock);
                block8.setIcon(greenBlock);
            } else if(block1.getIcon()==redBlock) {
                block1.setIcon(greenBlock);
                block2.setIcon(blueBlock);
                block8.setIcon(blueBlock);
            } else if(block1.getIcon()==greenBlock) {
                block1.setIcon(blueBlock);
                block2.setIcon(redBlock);
                block8.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block2) {
            if(block2.getIcon()==purpleBlock) {
                block2.setIcon(blueBlock);
                block1.setIcon(redBlock);
                block3.setIcon(redBlock);
                block9.setIcon(redBlock);
            } else if(block2.getIcon()==blueBlock) {
                block2.setIcon(redBlock);
                block1.setIcon(greenBlock);
                block3.setIcon(greenBlock);
                block9.setIcon(greenBlock);
            } else if(block2.getIcon()==redBlock) {
                block2.setIcon(greenBlock);
                block1.setIcon(blueBlock);
                block3.setIcon(blueBlock);
                block9.setIcon(blueBlock);
            } else if(block2.getIcon()==greenBlock) {
                block2.setIcon(blueBlock);
                block1.setIcon(redBlock);
                block3.setIcon(redBlock);
                block9.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block3) {
            if(block3.getIcon()==purpleBlock) {
                block3.setIcon(blueBlock);
                block2.setIcon(redBlock);
                block4.setIcon(redBlock);
                block10.setIcon(redBlock);
            } else if(block3.getIcon()==blueBlock) {
                block3.setIcon(redBlock);
                block2.setIcon(greenBlock);
                block4.setIcon(greenBlock);
                block10.setIcon(greenBlock);
            } else if(block3.getIcon()==redBlock) {
                block3.setIcon(greenBlock);
                block2.setIcon(blueBlock);
                block4.setIcon(blueBlock);
                block10.setIcon(blueBlock);
            } else if(block3.getIcon()==greenBlock) {
                block3.setIcon(blueBlock);
                block2.setIcon(redBlock);
                block4.setIcon(redBlock);
                block10.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block4) {
            if(block4.getIcon()==purpleBlock) {
                block4.setIcon(blueBlock);
                block3.setIcon(redBlock);
                block5.setIcon(redBlock);
                block11.setIcon(redBlock);
            } else if(block4.getIcon()==blueBlock) {
                block4.setIcon(redBlock);
                block3.setIcon(greenBlock);
                block5.setIcon(greenBlock);
                block11.setIcon(greenBlock);
            } else if(block4.getIcon()==redBlock) {
                block4.setIcon(greenBlock);
                block3.setIcon(blueBlock);
                block5.setIcon(blueBlock);
                block11.setIcon(blueBlock);
            } else if(block4.getIcon()==greenBlock) {
                block4.setIcon(blueBlock);
                block3.setIcon(redBlock);
                block5.setIcon(redBlock);
                block11.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block5) {
            if(block5.getIcon()==purpleBlock) {
                block5.setIcon(blueBlock);
                block4.setIcon(redBlock);
                block6.setIcon(redBlock);
                block12.setIcon(redBlock);
            } else if(block5.getIcon()==blueBlock) {
                block5.setIcon(redBlock);
                block4.setIcon(greenBlock);
                block6.setIcon(greenBlock);
                block12.setIcon(greenBlock);
            } else if(block5.getIcon()==redBlock) {
                block5.setIcon(greenBlock);
                block4.setIcon(blueBlock);
                block6.setIcon(blueBlock);
                block12.setIcon(blueBlock);
            } else if(block5.getIcon()==greenBlock) {
                block5.setIcon(blueBlock);
                block4.setIcon(redBlock);
                block6.setIcon(redBlock);
                block12.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block5) {
            if(block5.getIcon()==purpleBlock) {
                block5.setIcon(blueBlock);
                block4.setIcon(redBlock);
                block6.setIcon(redBlock);
                block12.setIcon(redBlock);
            } else if(block5.getIcon()==blueBlock) {
                block5.setIcon(redBlock);
                block4.setIcon(greenBlock);
                block6.setIcon(greenBlock);
                block12.setIcon(greenBlock);
            } else if(block5.getIcon()==redBlock) {
                block5.setIcon(greenBlock);
                block4.setIcon(blueBlock);
                block6.setIcon(blueBlock);
                block12.setIcon(blueBlock);
            } else if(block5.getIcon()==greenBlock) {
                block5.setIcon(blueBlock);
                block4.setIcon(redBlock);
                block6.setIcon(redBlock);
                block12.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block6) {
            if(block6.getIcon()==purpleBlock) {
                block6.setIcon(blueBlock);
                block5.setIcon(redBlock);
                block7.setIcon(redBlock);
                block13.setIcon(redBlock);
            } else if(block6.getIcon()==blueBlock) {
                block6.setIcon(redBlock);
                block5.setIcon(greenBlock);
                block7.setIcon(greenBlock);
                block13.setIcon(greenBlock);
            } else if(block6.getIcon()==redBlock) {
                block6.setIcon(greenBlock);
                block5.setIcon(blueBlock);
                block7.setIcon(blueBlock);
                block13.setIcon(blueBlock);
            } else if(block6.getIcon()==greenBlock) {
                block6.setIcon(blueBlock);
                block5.setIcon(redBlock);
                block7.setIcon(redBlock);
                block13.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block7) {
            if(block7.getIcon()==purpleBlock) {
                block7.setIcon(blueBlock);
                block6.setIcon(redBlock);
                block14.setIcon(redBlock);
                //block13.setIcon(redBlock);
            } else if(block7.getIcon()==blueBlock) {
                block7.setIcon(redBlock);
                block6.setIcon(greenBlock);
                block14.setIcon(greenBlock);
                //block13.setIcon(greenBlock);
            } else if(block7.getIcon()==redBlock) {
                block7.setIcon(greenBlock);
                block6.setIcon(purpleBlock);
                block14.setIcon(purpleBlock);
                //block13.setIcon(blueBlock);
            } else if(block7.getIcon()==greenBlock) {
                block7.setIcon(purpleBlock);
                block6.setIcon(blueBlock);
                block14.setIcon(blueBlock);
                //block13.setIcon(redBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block8) {
            if(block8.getIcon()==purpleBlock) {
                block8.setIcon(blueBlock);
                block1.setIcon(redBlock);
                block9.setIcon(redBlock);
                block15.setIcon(redBlock);
            } else if(block8.getIcon()==blueBlock) {
                block8.setIcon(redBlock);
                block1.setIcon(greenBlock);
                block9.setIcon(greenBlock);
                block15.setIcon(greenBlock);
            } else if(block8.getIcon()==redBlock) {
                block8.setIcon(greenBlock);
                block1.setIcon(purpleBlock);
                block9.setIcon(purpleBlock);
                block15.setIcon(purpleBlock);
            } else if(block8.getIcon()==greenBlock) {
                block8.setIcon(purpleBlock);
                block1.setIcon(blueBlock);
                block9.setIcon(blueBlock);
                block15.setIcon(blueBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }

        if(e.getSource()==block9) {
            if(block9.getIcon()==purpleBlock) {
                block9.setIcon(blueBlock);
                block2.setIcon(redBlock);
                block10.setIcon(redBlock);
                block8.setIcon(redBlock);
                block16.setIcon(redBlock);
            } else if(block9.getIcon()==blueBlock) {
                block9.setIcon(redBlock);
                block2.setIcon(greenBlock);
                block10.setIcon(greenBlock);
                block8.setIcon(greenBlock);
                block16.setIcon(greenBlock);
            } else if(block9.getIcon()==redBlock) {
                block9.setIcon(greenBlock);
                block2.setIcon(purpleBlock);
                block10.setIcon(purpleBlock);
                block8.setIcon(purpleBlock);
                block16.setIcon(purpleBlock);
            } else if(block9.getIcon()==greenBlock) {
                block9.setIcon(purpleBlock);
                block2.setIcon(blueBlock);
                block10.setIcon(blueBlock);
                block8.setIcon(blueBlock);
                block16.setIcon(blueBlock);
            } else {
                // Woops! Something went wrong!
                errorBg.setVisible(true);
                errorMessage.setText("Woops! Something went wrong! @" + e.getSource());
            }   
        }
    }

    public void gameReset() {

        // Add Tiles to mainFrame
        block1.setIcon(randomizer());
        block2.setIcon(randomizer());
        block3.setIcon(randomizer());
        block4.setIcon(randomizer());
        block5.setIcon(randomizer());
        block6.setIcon(randomizer());
        block7.setIcon(randomizer());

        block8.setIcon(randomizer());
        block9.setIcon(randomizer());
        block10.setIcon(randomizer());
        block11.setIcon(randomizer());
        block12.setIcon(randomizer());
        block13.setIcon(randomizer());
        block14.setIcon(randomizer());

        block15.setIcon(randomizer());
        block16.setIcon(randomizer());
        block17.setIcon(randomizer());
        block18.setIcon(randomizer());
        block19.setIcon(randomizer());
        block20.setIcon(randomizer());
        block21.setIcon(randomizer());

        block22.setIcon(randomizer());
        block23.setIcon(randomizer());
        block24.setIcon(randomizer());
        block25.setIcon(randomizer());
        block26.setIcon(randomizer());
        block27.setIcon(randomizer());
        block28.setIcon(randomizer());

        block29.setIcon(randomizer());
        block30.setIcon(randomizer());
        block31.setIcon(randomizer());
        block32.setIcon(randomizer());
        block33.setIcon(randomizer());
        block34.setIcon(randomizer());
        block35.setIcon(randomizer());

        block36.setIcon(randomizer());
        block37.setIcon(randomizer());
        block38.setIcon(randomizer());
        block39.setIcon(randomizer());
        block40.setIcon(randomizer());
        block41.setIcon(randomizer());
        block42.setIcon(randomizer());

        block43.setIcon(randomizer());
        block44.setIcon(randomizer());
        block45.setIcon(randomizer());
        block46.setIcon(randomizer());
        block47.setIcon(randomizer());
        block48.setIcon(randomizer());
        block49.setIcon(randomizer());
    }

    public ImageIcon randomizer() {

        Random r = new Random();
        int rNum = r.nextInt(4);

        if(rNum==0) {
            return purpleBlock;
        } else if(rNum==1) {
            return redBlock;
        } else if(rNum==2) {
            return greenBlock;
        } else {
            return blueBlock;
        }
    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Blox().game();
            }
        });
    }
}

最佳答案

不要将 MouseListener 与 JButton 一起使用,而应使用 ActionListeners。 button tutorial 中详细说明了这一点,我强烈建议您尽快阅读它们。

我发现您的代码存在一个主要问题:

public ImageIcon randomizer() {

    try {
        purpleBlock.setImage(ImageIO.read(new File("purpleBlock.png")));
        redBlock.setImage(ImageIO.read(new File("redBlock.png")));
        blueBlock.setImage(ImageIO.read(new File("blueBlock.png")));
        greenBlock.setImage(ImageIO.read(new File("greenBlock.png")));
    } catch (IOException e) {
        e.printStackTrace();
    }   

    Random r = new Random();
    int rNum = r.nextInt(4);

    if(rNum==0) {
        return purpleBlock;
    } else if(rNum==1) {
        return redBlock;
    } else if(rNum==2) {
        return greenBlock;
    } else {
        return blueBlock;
    }
}

每当调用 randomizer() 方法时,您都会从文件中重新读取所有色 block 图像。没有必要这样做,因为已经使用正确的图像创建了 ImageIcons,但不仅如此,这可能会痛苦地减慢您的程序。

关于java - 鼠标 ActionListener 和鼠标点击 (MouseEvent e),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15016580/

相关文章:

java - "insert "new ClassType ( )"to complete Expression"是什么意思?

java - 我可以在不使类泛型的情况下使构造函数泛型吗?

java - 在 Eclipse 中进入 Java EE 代码

javascript - 将函数传递给普通对象中的 .on()

javascript - 带有光线转换和相交测试的 Three.js 鼠标事件

拖动手势 Activity 时未引发 JavaFX KeyEvent

java - 生成一个偏离两极的随机纬度

java - Repaint() 后 JComponent 移动到原点

Java - PaintComponent 导致我的程序变慢

java - 如何让我的 MenuItems 从单独的类中调用方法?