Java 如何制作表格视图';s特定列';s单元格不可选择?

Java 如何制作表格视图';s特定列';s单元格不可选择?,java,javafx,javafx-2,javafx-8,Java,Javafx,Javafx 2,Javafx 8,我正在尝试创建一个矩阵表,其中X轴上有课程,Y轴上有学生姓名。 每个单元格应代表学生在课程中的分数 我还没有找到任何方法来创建一个矩阵表,而只是将第一列作为学生的名字。(如果有其他方法,请告诉我) 我可以选择这些细胞。然而,我希望学生的姓名列单元格是不可选择的,但没有运气 请告知。 谢谢 我认为你的问题由两部分组成 第一个:制作一个表格,其中x轴代表课程,y轴代表学生姓名 首先,我们创建一个简单的类来表示我们的数据模型,并将其称为data,这是它的代码 public class Data{ p

我正在尝试创建一个矩阵表,其中X轴上有课程,Y轴上有学生姓名。 每个单元格应代表学生在课程中的分数

我还没有找到任何方法来创建一个矩阵表,而只是将第一列作为学生的名字。(如果有其他方法,请告诉我)

我可以选择这些细胞。然而,我希望学生的姓名列单元格是不可选择的,但没有运气

请告知。
谢谢

我认为你的问题由两部分组成

第一个:制作一个表格,其中x轴代表课程,y轴代表学生姓名

首先,我们创建一个简单的类来表示我们的数据模型,并将其称为data,这是它的代码

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;
}}
现在让我们创建表视图,并用一些数据填充它

下面是它的简单代码

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);
}
导入java.net.URI;
导入java.util.ArrayList;
导入java.util.List;
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.control.Hyperlink;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TablePosition;
导入javafx.scene.control.TableView;
导入javafx.scene.control.cell.PropertyValueFactory;
导入javafx.scene.layout.VBox;
导入javafx.stage.stage;
公共类JFXION扩展了应用程序{
@凌驾
公众假期开始(阶段)
{
List dataList=new ArrayList();
添加(新数据(“Mohammed”,50,50,50));
添加(新数据(“Ahmed”,49、50、47));
添加(新数据(“Anas”,45、49、49));
//告诉表格:您的数据在[data]对象中表示
TableView table=新TableView();
table.setEditable(true);
TableColumn studentsColumn=新的TableColumn(“学生”);
//告诉学生姓名列,您的数据位于名为[studentName]的字段中
studentsColumn.setCellValueFactory(
新PropertyValueFactory(“studentName”)
);
TableColumn mathColumn=新的TableColumn(“数学”);
setCellValueFactory(新属性ValueFactory(“mathDegree”);
TableColumn religionColumn=新的TableColumn(“宗教”);
religionColumn.setCellValueFactory(新属性ValueFactory(“religionDegree”));
TableColumn javaColumn=新的TableColumn(“Java”);
setCellValueFactory(新的PropertyValueFactory(“javaDegree”);
TableColumn课程Columns=新的TableColumn(“课程”);
courseColumns.getColumns().addAll(mathColumn、religionColumn、javaColumn);
TablePosition单元格=table.getFocusModel().getFocusedCell();
table.getColumns().addAll(studentsColumn、coursesColumns);
table.getItems().addAll(数据列表);
超级链接=新的超级链接(“更多信息”);
link.setOnAction(e->
{
尝试
{
java.awt.Desktop.getDesktop().browse(新URI(“http://docs.oracle.com/javafx/2/ui_controls/table-view.htm"));
}捕获(例外情况除外)
{
抛出新的运行时异常(ex);
}
});
VBox框=新的VBox(10,表格,链接);
场景=新场景(框);
舞台场景;
stage.show();
}
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)
{
发射(args);
}
}

试试这个,然后构建自己的代码和类

但你问题的第二部分并不清楚

你也应该看看这个链接

我希望这是有用的,如果你有任何问题,让评论