2013-02-22 2 views
1

명백한 이유 때문에 MouseListener를 내 게임에 구현했습니다. 사용자는 보드를 클릭 할 수 있어야합니다.mouseActionListener 및 mouseClick (MouseEvent e)

보드 자체를 클릭해도 문제가 발생하지 않습니다. 리셋 버튼 resetBoard을 사용하면이 문제가 생길 수 있습니다. 버튼을 클릭하면 보드가 변경되지만 클릭이 해제되면 보드가 다시 변경됩니다. 나는 내 행동이 모두 public void mouseClicked(MouseEvent e) 블록 아래에 있다는 것을 고려하여 다운 클릭과 릴리스 모두에서 왜 변경되는지를 설명하는 곳을 찾을 수 없습니다. 나는 비어있다 mouseReleased, mouseEntered, mouseExited, mousePressed.

기본적으로 mouseClicked이 비어 있지 않은 이유는 보드가 마우스 아래쪽과 위로 (동일한 동작에서) 모두 재설정된다는 것을 이해할 수 있습니까?

오, 나는 그 수입품 전부를 필요로하지 않는다는 것을 알고있다, 나는 그것들을 한순간에 사용했다. 나는이 현안에서 너무 소비 되었기 때문에 그들을 꺼내는 것을 잊었다.

반복해서 죄송합니다. 내가 현재하는 방법을 알고있는 유일한 방법.

감사합니다.

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(); 
      } 
     }); 
    } 
} 
+1

'MouseListener'보다는 버튼에 'ActionListener'를 사용하십시오. 또한 숫자 접두사 만 다른 변수 이름을 사용하는 경우 대신 배열을 사용해야합니다. 이러한 배열을 사용하여 for 루프를 적절하게 사용하면 코드 줄 수를 반으로 줄일 수 있습니다. –

+0

나는 @ Code-Guru를 해보려고했지만 튜토리얼을 따라도 내 인생에 대해 알아낼 수 없었다. 그러나 제안에 감사드립니다! – pattmorter

+1

@pattmorter : JButton을 사용하는 올바른 방법이기 때문에 ActionListener로 시도한 것을 보여주십시오. –

답변

3

JButton에서 MouseListener를 사용하지 말고 대신 ActionListeners를 사용하십시오. 이 내용은 모두 button tutorial에 나와 있으며, 최대한 빨리 읽으시기 바랍니다. 난 당신의 코드를 참조

하나의 큰 문제는 여기에서 찾을 수있다 : 당신은 randomizer() 메소드가 호출 될 때마다 파일에서 모든 색상 블록 이미지를 다시 읽어

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; 
    } 
} 

. ImageIcon이 이미 적절한 이미지로 생성 되었기 때문에이 작업을 수행 할 필요는 없습니다.하지만이 작업만으로는 프로그램이 고통스럽게 다운 될 수 있습니다.

+0

어쩌면 내가 대답 = p –

+0

@code 대신 대답을 게시해야합니다 : 죄송합니다, 예, 그렇게하고 내가 삭제할 것입니다. 중복 방지에 대한 좋은 정보를 얻었습니다. 단순화되고 청소되기를 요구하는 꽤 추악한 코드입니다. –

+0

처음에는'ActionListeners'를 사용했지만 같은 문제가 발생했습니다. – pattmorter

1

MouseListener 대신 단추에 ActionListener을 사용하십시오. 또한 숫자 접미사 만 다른 변수 이름을 사용하는 경우 배열을 대신 사용해야합니다. 코드 줄 수를 크게 줄일 수 있습니다. 49 대신 1 개의 선언 만 필요하며 버튼 변수에 액세스하는 대부분의 코드 섹션은 각각 1 줄로 줄여서 for 루프 (1 줄 + 닫는 중괄호)를 줄일 수 있습니다.

+0

1 + 좋은 조언을! –

+0

@ Code-Guru :'ArrayList '을 실행 한 다음'new JButton ("Button ::"+ i)'을 사용하여 for 루프를 작성하면됩니까? 그게 전부 내가 생각할 수 있습니다. – pattmorter

+0

@pattmorter 시도하면 어떻게됩니까? –