2017-04-24 47 views
-2

我想JavaFX中做出9x9的數獨格這樣的形象爪哇 - 添加背景,每平方在9x9的網格

enter image description here

任何想法如何做一個很好的方式嗎?謝謝

編輯: 我設法做到了,但代碼看起來不太好。

private void addBackground(StackPane cell, int row, int col) { 
    String[] colors = {"#b0cbe1", "#cbe183", "#e18398","#b0e183", "#b8778a", "#e198b0", "#b08398", "#cb98b0", "#e1b0cb"}; 
    if(row < 3) { 
     if(col < 3) { 
      cell.setStyle("-fx-background-color: " + colors[0] + ";"); 
     } else if (col >= 3 && col < 6) { 
      cell.setStyle("-fx-background-color: " + colors[1] + ";"); 
     } else{ 
      cell.setStyle("-fx-background-color: " + colors[2] + ";"); 
     } 
    } else if (row >= 3 && row <6) { 
     if(col < 3) { 
      cell.setStyle("-fx-background-color: " + colors[3] + ";"); 
     } else if (col >= 3 && col < 6) { 
      cell.setStyle("-fx-background-color: " + colors[4] + ";"); 
     } else { 
      cell.setStyle("-fx-background-color: " + colors[5] + ";"); 
     } 
    } else { 
     if(col < 3) { 
      cell.setStyle("-fx-background-color: " + colors[6] + ";"); 
     } else if (col >= 3 && col < 6) { 
      cell.setStyle("-fx-background-color: " + colors[7] + ";"); 
     } else{ 
      cell.setStyle("-fx-background-color: " + colors[8] + ";"); 
     } 
    } 
} 
+0

一種方法是將窗格(或者也許標籤,或其他)在網格窗格中,並使用CSS ...你應該嘗試一些東西,並張貼一些實際的代碼,如果你可以'讓它工作。 –

+0

好的。謝謝。我正在處理它,但看起來很糟糕:)) –

+0

您可能對這個有趣的項目感興趣[Sudoku grabber and solver using OpenCV,JavaFX and Scala](https://github.com/rladstaetter/sudokufx),雖然它是一種先進的方式,可能會讓你感到困惑(並且根本不會幫助你解決問題),它非常聰明。 – jewelsea

回答

2

而不是所有這些的if-else構建你可以使用

int colorIndex = 3 * (row/3) + (col/3); 
cell.setStyle("-fx-background-color: " + colors[colorIndex] + ";"); 

注意row/3使用整數除法計算,所以row/3爲0,當行處於{0,1,2},當行在{3,4,5}時爲1,當行在{6,7,8}時爲2。 (所以3 * (row/3)不等於row。)

+0

太好了。非常感謝你。 –