如何在JavaFX中显示矩阵

时间:2018-11-13 16:34:03

标签: java javafx

我有两个文本字段和一个按钮。第一个将具有行数,第二个将具有列数。 Button应该使用该数字创建表格,然后对该表格的元素进行处理。为此有没有C#的GridView的类似物?因为正如我所见,我无法更改TableView中的行数,并且我认为这将在以后的计算中引起问题。来自c#的示例:

n = Int32.Parse(numericUpDown1.Text);
m = Int32.Parse(numericUpDown2.Text);
dataGridView1.RowCount = n;
dataGridView1.ColumnCount = m;

enter image description here

在Java中我可以用来做什么?

1 个答案:

答案 0 :(得分:0)

Java Swing有一个JTable。在Java FX中,该控件称为TableView。 https://docs.oracle.com/javafx/2/ui_controls/table-view.htm

这是一个非常复杂的控件。您必须创建一个表,然后将“列”对象添加到表对象中,如下所示:

DefaultTableModel tableModel =新的DefaultTableModel();

    javax.swing.JComboBox<Integer> jComboBoxRows = new javax.swing.JComboBox<>();
    javax.swing.JComboBox<Integer> jComboBoxColumns = new javax.swing.JComboBox<>();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Simple JTable Example");

    jComboBoxRows.setModel(new javax.swing.DefaultComboBoxModel<>(new Integer[]{1, 2, 3, 4}));

    jTable1.setModel(tableModel);

   jComboBoxRows.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            Integer tableRowValue = (Integer) jComboBoxRows.getSelectedItem();
            tableModel.setNumRows(tableRowValue.intValue());
            tableModel.fireTableDataChanged();
        }
    });

    jComboBoxColumns.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            Integer tableColumnValue = (Integer) jComboBoxColumns.getSelectedItem();
            tableModel.setColumnCount(tableColumnValue.intValue());
            tableModel.fireTableDataChanged();
        }
    });

这是非常通用的。基本上,您使用'DefaultTableModel'并使用'set'或'add'或'remove'更改列和行的模型。然后,您必须触发一个事件,以便UI根据模型更改进行刷新。这两个听众都很幼稚,但却使您走上了正确的道路。抱歉,我无法给出更好的例子。时间不多了...:-)

祝你好运!