2017-01-12 5 views
0

私はX軸にコースがあり、Y軸に学生の名前がある行列テーブルを作成しようとしています。 各セルは、コースの学生の成績を表す必要があります。テーブルビューの特定の列のセルを選択できないようにする方法

最初の列を生徒の名前にするだけでは、行列表を作成する方法が見つかりませんでした。 (他の方法があれば教えてください)

私は細胞を選択可能にすることができました。しかし、私は学生の名前の列のセルを選択できないようにしたいが、それは不運だ。

お知らせください。 ありがとう!

答えて

0

私はあなたの質問は2つの部分

最初のもので構成されてと思う:最初に学生の名前

のためのコースとy軸のx軸を持つテーブルを作る我々はを表す単純なクラスを作成しますデータモデルとデータがここにそれがコード

public class Data{ 

private String studentName; 
private int mathDegree; 
private int religionDegree; 
private int javaDegree; 

public Data(String studentName, int mathDegree, int religionDegree, int javaDegree) 
{ 
    this.studentName = studentName; 
    this.mathDegree = mathDegree; 
    this.religionDegree = religionDegree; 
    this.javaDegree = javaDegree; 
} 

public String getStudentName() 
{ 
    return studentName; 
} 

public void setStudentName(String studentName) 
{ 
    this.studentName = studentName; 
} 

public int getMathDegree() 
{ 
    return mathDegree; 
} 

public void setMathDegree(int mathDegree) 
{ 
    this.mathDegree = mathDegree; 
} 

public int getReligionDegree() 
{ 
    return religionDegree; 
} 

public void setReligionDegree(int religionDegree) 
{ 
    this.religionDegree = religionDegree; 
} 

public int getJavaDegree() 
{ 
    return javaDegree; 
} 

public void setJavaDegree(int javaDegree) 
{ 
    this.javaDegree = javaDegree; 
}} 

だと、今私たちのテーブルビューを作成し、ここでそのsがありますいくつかのデータを

それを埋めることができますそれを呼び出しますコードimple

import java.net.URI; 
import java.util.ArrayList; 
import java.util.List; 
import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Hyperlink; 
import javafx.scene.control.TableColumn; 
import javafx.scene.control.TablePosition; 
import javafx.scene.control.TableView; 
import javafx.scene.control.cell.PropertyValueFactory; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class JFXION extends Application{ 
@Override 
public void start(Stage stage) 
{ 

    List<Data> dataList = new ArrayList<>(); 
    dataList.add(new Data("Mohammed", 50, 50, 50)); 
    dataList.add(new Data("Ahmed", 49, 50, 47)); 
    dataList.add(new Data("Anas", 45, 49, 49)); 

    //tell the table that: your data is represented in [Data]objects 
    TableView<Data> table = new TableView(); 

    table.setEditable(true); 

    TableColumn<Data, String> studentsColumn = new TableColumn("student"); 
    //tell the student name column that your data is found in a field called[studentName] 
    studentsColumn.setCellValueFactory(
      new PropertyValueFactory<>("studentName") 
    ); 

    TableColumn<Data, Integer> mathColumn = new TableColumn("Maths"); 
    mathColumn.setCellValueFactory(new PropertyValueFactory<>("mathDegree")); 
    TableColumn<Data, Integer> religionColumn = new TableColumn("Religion"); 
    religionColumn.setCellValueFactory(new PropertyValueFactory<>("religionDegree")); 
    TableColumn<Data, Integer> javaColumn = new TableColumn("Java"); 
    javaColumn.setCellValueFactory(new PropertyValueFactory<>("javaDegree")); 
    TableColumn coursesColumns = new TableColumn("courses"); 
    coursesColumns.getColumns().addAll(mathColumn, religionColumn, javaColumn); 
    TablePosition cell = table.getFocusModel().getFocusedCell(); 

    table.getColumns().addAll(studentsColumn, coursesColumns); 

    table.getItems().addAll(dataList); 

    Hyperlink link = new Hyperlink("more info"); 
    link.setOnAction(e -> 
    { 
     try 
     { 
      java.awt.Desktop.getDesktop().browse(new URI("http://docs.oracle.com/javafx/2/ui_controls/table-view.htm")); 
     } catch (Exception ex) 
     { 
      throw new RuntimeException(ex); 
     } 
    }); 

    VBox box = new VBox(10, table, link); 

    Scene scene = new Scene(box); 
    stage.setScene(scene); 
    stage.show(); 
} 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) 
{ 
    launch(args); 
} 

}

ちょうどあなたもこれを見ている必要があり、これを試してみて、独自のコードとクラス

を構築するが、あなたの質問の2番目の部分は明らか

ではありませんリンクjavafx table views

これは便利で、問題がある場合はコメントしてください。

関連する問題