2016-05-23 38 views
0

我的问题是我将如何在buttonHandler()中使用循环来确定按下的按钮的值是否大于前一个值。所以我在寻找的是一种方法,以确保谁点击按钮点击他们按照他们看到的数量升序。这是一个基于点击按钮的GUI游戏,以评估灵活性。如何确保JButtons按照他们的文字按升序排列

这里是按钮数组填充1-12的数字的方法,这也确保没有重复的数字,因此它将具有从1-12的所有数字,无论如何。

public static JButton[] randNum() 
    { 

     arrayImage [0] = (int) (Math.random() * 12) + 1; 
     arrayImage [1] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [1] == arrayImage [0]) 
     { 
      arrayImage [1] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [2] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [2] == arrayImage [1] || arrayImage [2] == arrayImage [0]) 
     { 
      arrayImage [2] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [3] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [3] == arrayImage [2] || arrayImage [3] == arrayImage [1] || arrayImage [3] == arrayImage [0]) 
     { 
      arrayImage [3] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [4] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [4] == arrayImage [3] || arrayImage [4] == arrayImage [2] || arrayImage [4] == arrayImage [1] || arrayImage [4] == arrayImage [0]) 
     { 
      arrayImage [4] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [5] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [5] == arrayImage [4] || arrayImage [5] == arrayImage [3] || arrayImage [5] == arrayImage [2] || arrayImage [5] == arrayImage [1] || arrayImage [5] == arrayImage [0]) 
     { 
      arrayImage [5] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [6] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [6] == arrayImage [5] || arrayImage [6] == arrayImage [4] || arrayImage [6] == arrayImage [3] || arrayImage [6] == arrayImage [2] || arrayImage [6] == arrayImage [1] || arrayImage [6] == arrayImage [0]) 
     { 
      arrayImage [6] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [7] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [7] == arrayImage [6] || arrayImage [7] == arrayImage [5] || arrayImage [7] == arrayImage [4] || arrayImage [7] == arrayImage [3] || arrayImage [7] == arrayImage [2] || arrayImage [7] == arrayImage [1] || arrayImage [7] == arrayImage [0]) 
     { 
      arrayImage [7] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [8] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [8] == arrayImage [7] || arrayImage [8] == arrayImage [6] || arrayImage [8] == arrayImage [5] || arrayImage [8] == arrayImage [4] || arrayImage [8] == arrayImage [3] || arrayImage [8] == arrayImage [2] || arrayImage [8] == arrayImage [1] || arrayImage [8] == arrayImage [0]) 
     { 
      arrayImage [8] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [9] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [9] == arrayImage [8] || arrayImage [9] == arrayImage [7] || arrayImage [9] == arrayImage [6] || arrayImage [9] == arrayImage [5] || arrayImage [9] == arrayImage [4] || arrayImage [9] == arrayImage [3] || arrayImage [9] == arrayImage [2] || arrayImage [9] == arrayImage [1] || arrayImage [9] == arrayImage [0]) 
     { 
      arrayImage [9] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [10] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [10] == arrayImage [9] || arrayImage [10] == arrayImage [8] || arrayImage [10] == arrayImage [7] || arrayImage [10] == arrayImage [6] || arrayImage [10] == arrayImage [5] || arrayImage [10] == arrayImage [4] || arrayImage [10] == arrayImage [3] || arrayImage [10] == arrayImage [2] || arrayImage [10] == arrayImage [1] || arrayImage [10] == arrayImage [0]) 
     { 
      arrayImage [10] = (int) (Math.random() * 12) + 1; 
     } 
     arrayImage [11] = (int) (Math.random() * 12) + 1; 
     while (arrayImage [11] == arrayImage [10] || arrayImage [11] == arrayImage [9] || arrayImage [11] == arrayImage [8] || arrayImage [11] == arrayImage [7] || arrayImage [11] == arrayImage [6] || arrayImage [11] == arrayImage [5] || arrayImage [11] == arrayImage [4] || arrayImage [11] == arrayImage [3] || arrayImage [11] == arrayImage [2] || arrayImage [11] == arrayImage [1] || arrayImage [11] == arrayImage [0]) 
     { 
      arrayImage [11] = (int) (Math.random() * 12) + 1; 
     } 

     for (int x = 0 ; x <= 11 ; x++) 
     { 
      buttonArray [x] = new JButton ("" + arrayImage [x]); 
      buttonArray [x].setBackground (Color.orange); 
     } 
     for (int i = 0 ; i <= 11 ; i++) 
     { 
      buttonArray [i].setActionCommand ("" + arrayImage [i]); 

     } 

     return buttonArray; 
    } 

这是我在主要方法中引入按钮数组的方法。

static JButton btnStart, buttonArray[] = new JButton [12]; 

赋予它们颜色,以及循环用于按顺序为它们赋予每个动作侦听器。

for (int x = 0 ; x <= 11 ; x++) 
     { 
      buttonArray [x] = new JButton (""); 
      buttonArray [x].setBackground (Color.orange); 
     } 


     ButtonHandler onClick = new ButtonHandler(); 
     btnStart.addActionListener (onClick); 
     for (int y = 0 ; y <= 11 ; y++) 
     { 
      buttonArray [y].addActionListener (onClick); 
     } 

这里是面板的介绍,并将面板添加到面板中。然后将面板添加到框架上。

JPanel gameBoard = new JPanel (new GridLayout (2, 6)); 
     gameBoard.setBackground (Color.orange); 
     JPanel gameContent = new JPanel (new GridLayout (1, 2)); 
     JPanel mainGame = new JPanel (new BorderLayout()); 



     //GAme Board 
     gameContent.add (btnStart); 
     gameContent.add (scoreOutput); 
     gameBoard.add (buttonArray [0]); 
     gameBoard.add (buttonArray [1]); 
     gameBoard.add (buttonArray [2]); 
     gameBoard.add (buttonArray [3]); 
     gameBoard.add (buttonArray [4]); 
     gameBoard.add (buttonArray [5]); 
     gameBoard.add (buttonArray [6]); 
     gameBoard.add (buttonArray [7]); 
     gameBoard.add (buttonArray [8]); 
     gameBoard.add (buttonArray [9]); 
     gameBoard.add (buttonArray [10]); 
     gameBoard.add (buttonArray [11]); 


     mainGame.add (gameBoard, BorderLayout.CENTER); 
     mainGame.add (gameContent, BorderLayout.PAGE_END); 



Container contentPane1 = questions.getContentPane(); 
     contentPane1.add (mainGame); 


questions.setSize (500, 250); 
     questions.setVisible (true); 
+0

您可以使用一个字符串。当U第按下一个按钮。在字符串中添加按钮号。现在,当按下一个按钮时,检查最后一个被按下的数字和当前按钮的数字,如果它大于先前的数字,那么如果不是,则可以显示错误。你也可以使用整型数组来存储按下按钮的值并检查你的条件。回答是希望您对如何从字符串获取单个字符以及如何将其转换为整数有足够的了解。 –

+0

是那个toString()命令? – Toni

+0

你是什么意思? – Toni

回答

0

首先,您必须将数字作为它们的名称给按钮。 你可以这样做: 取一个数组和一个变量:在构造函数的n

int pressed[] = new int[12]; 
int n; 

设定值0。 现在的actionPerformed(ActionEvent的AE)方法:

if(pressed.length==0) 
    pressed[n]=Integer.parseInt(ae.getActionCommand()); 

else 
    Check if last number in array is less than current number 
    else show error 

可以使用获得最后一个数字: 按下[pressed.length-1]