2016-05-23 39 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]