2017-05-27 101 views
-2

我有一個輸入矩陣參數的JFrame,輸入這些參數後,用戶應該點擊一個按鈕來開始模擬。問題是,該按鈕應該被點擊兩次而不是一次,以打開寫入消息的JOption窗格。我無法弄清楚爲什麼會發生這種情況。這是從模擬按鈕的動作進行功能調用的函數:爲什麼雙擊而不是單個?

private void setMatrixParameters(){ 
    if(tfTouristNumber.getText().equals("") || tfRowNumber.getText().equals("") || tfColumnNumber.getText().equals("") || tfMinimal.getText().equals("")){ 
     JFrame frame = new JFrame(); 
     JOptionPane.showMessageDialog(frame, "All fields must be filled", "Error!", JOptionPane.ERROR_MESSAGE); 
    } 

    //check the matrix dimensions 
    else if(min + touristNumber > Integer.parseInt(tfRowNumber.getText()) * Integer.parseInt(tfColumnNumber.getText())){ 
     int dimension= min + touristNumber; 
     JFrame frame = new JFrame(); 
     JOptionPane.showMessageDialog(frame, "Matrix dimensions too small. Need to be at least:" + dimension, "Enlarge matrix!", JOptionPane.ERROR_MESSAGE); 
    } 

    else{ 
     this.touristNumber = Integer.parseInt(tfTouristNumber.getText()); 
     int row = Integer.parseInt(tfRowNumber.getText()); 
     int column = Integer.parseInt(tfColumnNumber.getText()); 
     this.matrix = new Object[row][column]; 
     this.min = Integer.parseInt(tfMinimal.getText()); 
    } 
} 
+0

您發佈的任何代碼都與點擊無關。 –

+0

@ CrushaK.Rool我知道,但我沒有別的從動作執行功能調用。它應該只需點擊一下,就像我應用程序中的其他按鈕一樣。我無法弄清楚問題所在。 – ivana14

+0

我不清楚你想要發生什麼。從您發佈的代碼中,該按鈕的點擊只不過是驗證並將某些文本字段的輸入讀入本地字段。無論您點擊那個按鈕多少次,這就是發生的一切。 –

回答

1

你在這種情況下,問題是,你不檢查第二,如果條件的文本字段值。以下應該做的伎倆。

private void setMatrixParameters(){ 
    if(tfTouristNumber.getText().equals("") || tfRowNumber.getText().equals("") || tfColumnNumber.getText().equals("") || tfMinimal.getText().equals("")){ 
     JFrame frame = new JFrame(); 
     JOptionPane.showMessageDialog(frame, "All fields must be filled", "Error!", JOptionPane.ERROR_MESSAGE); 
     return; 
    } 

    // Read values here. (Should probably add a try-catch block around this, in case it can't be parsed as number) 
    int inTouristNumber = Integer.parseInt(tfTouristNumber.getText()); 
    int inRow = Integer.parseInt(tfRowNumber.getText()); 
    int inColumn = Integer.parseInt(tfColumnNumber.getText()); 
    int inMin = Integer.parseInt(tfMinimal.getText()); 

    //check the matrix dimensions 
    if(inMin + inTouristNumber > inRow * inColumn){ 
     int dimension= inMin + inTouristNumber; 
     JFrame frame = new JFrame(); 
     JOptionPane.showMessageDialog(frame, "Matrix dimensions too small. Need to be at least:" + dimension, "Enlarge matrix!", JOptionPane.ERROR_MESSAGE); 
    } 
    else{ 
     this.touristNumber = inTouristNumber; 
     this.matrix = new Object[inRow][inColumn]; 
     this.min = inMin; 
    } 
} 
+0

它的工作原理!謝謝! – ivana14

相關問題