2017-03-03 5 views
0

私はJavaプログラミングにまだまだ慣れず、いくつかの概念、特にTableColumnセル値を設定することに苦労しています。 (誰でも素人の用語でこれを説明することができた場合、それは素晴らしいだろう!)JavaFXがテーブルセル内の色またはアイコンを設定している場合

ここに私の質問です...

は私がダービーでの私のデータテーブルからObservableListで読み込むテーブルビューを持っていますデータベース。テーブルにデータを追加するforループは、オンラインで見たことから学んだもので、間違いなく私のために働いていました。私はそれ以上のステップを踏みたいので、ここに私の挑戦です...

ObservalbleListは、行1 [おもちゃ、高等学校など]行2 [ボックス、メディアなど]のようになります。今度は、このリストを見て、最初の値を取得し、それが高、中、または低であれば、私が割り当てる状態の列に色のアイコンを追加します(アイコンの場合は色で塗りつぶします)あまりにも多くの仕事です)Example。これは私のコードであり、そのカラーアイコンピースがforループ内にあるのならおそらく意味をなさないでしょう。私が達成しようとしているこの全機能は、Excelの条件付き書式設定と同じです。

data = FXCollections.observableArrayList(); 

while (rs.next()) { 

    ObservableList<String> row = FXCollections.observableArrayList(); 

    for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++) { 
     row.add(rs.getString(i));    
    } 

    data.add(row); 
    data.add(row); 

    if (data.get(2).equals("High")) { 
     //***set cell icon red or color fill red with padding around*** 
    }    
} 

mtable.setItems(data); 

助けてください!ありがとうございました!

答えて

0

TableColumnの値を設定する場合は、これまでに回答されているので説明しません。 How to set value to cell in TableView in javafxといくつかの簡単なGoogle検索で詳細を見つけることができます。私は "javafx set tablecolumn value"を検索しました

適切なデータモデルClassには、データベースから取得するデータセットに適したメソッドがあります。あなたのデータベースには何が入っているのか分かりませんので、写真に投稿したもの、つまりItem NamePriorityStatusを使用しました。

TableViewにはCircleを必ず追加できますが、データモデルClassに適切に宣言する必要があります。

あなたも、私は提供しなかったということが必要になりますいくつかのもの:

  • あなたはあなたのデータベースのリターンを解析し、適切なデータコンストラクタの呼び出しを行う必要があります。私はあなたにそれを残します。

さて、私が提供しているものとそれを達成するために何をしたのですか。

データベースの戻り値を格納するには、データモデルClassを使用する必要があります。そのため、正しく設定することが重要です。ですから、あなたが帰ってきたそれぞれのデータポイントについては、適切なsetgetメソッドが必要です。

データを返すループでは、new DataModel(x, y, z, ...);を作成し、ObservableList<DataModel>に追加する必要があります。

メイン:ここ

は、例えばベースドン絵があなたの提供です。Javaの

public class Main extends Application { 
    @Override 
    public void start(Stage primaryStage) { 
     TableView<Data> dataTable = new TableView<>(); 
     TableColumn<Data, String> itemName = new TableColumn<>("Item Name"); 
     itemName.setCellValueFactory(cell -> new SimpleStringProperty(cell.getValue().getName())); 
     TableColumn<Data, String> priority = new TableColumn<>("Priority"); 
     priority.setCellValueFactory(cell -> new SimpleStringProperty(cell.getValue().getPriority())); 
     TableColumn<Data, Circle> status = new TableColumn<>("Status"); 
     status.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue().getStatus())); 

     dataTable.getColumns().addAll(itemName, priority, status); 
     ObservableList<Data> data = FXCollections.observableArrayList(); 

     Data high = new Data("toy", "high"); 
     Data medium = new Data("box", "medium"); 
     Data low = new Data("candy", "low"); 
     data.addAll(high, medium, low); 

     dataTable.setItems(data); 
     Scene scene = new Scene(dataTable, 500, 500); 

     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Data.java(これは私のデータモデルである)

public class Data { 
    private String name; 
    private String priority; 
    private Circle status; 

    public Data (String name, String priority){ 
     setName(name); 
     setPriority(priority); 
     setStatus(priority); 
    } 

    public String getName(){ 
     return name; 
    } 
    public void setName(String name){ 
     this.name = name; 
    } 

    public String getPriority(){ 
     return priority; 
    } 
    public void setPriority(String priority){ 
     this.priority = priority; 
    } 

    public Circle getStatus(){ 
     return status; 
    } 
    public void setStatus(String priority){ 
     Circle c = new Circle(5); 
     switch(priority){ 
      case "high": 
       c.setFill(Color.GREEN); 
       break; 
      case "medium": 
       c.setFill(Color.YELLOW); 
       break; 
      case "low": 
       c.setFill(Color.RED); 
       break; 
      default: 
     } 
     status = c; 
    } 
} 

あなたが見ることができるように、私はConstructorstatusを提供しなかったのではなく、私が使用しそれを決定するためにPriority

これが役に立ちます。

+0

私はもっと多くのコンテンツを追加しました。もしあなたが一見気にしないなら、 @HypnicJerk – jerry

関連する問題