我有两个文本字段和一个按钮。第一个将具有行数,第二个将具有列数。 Button应该使用该数字创建表格,然后对该表格的元素进行处理。为此有没有C#的GridView的类似物?因为正如我所见,我无法更改TableView中的行数,并且我认为这将在以后的计算中引起问题。来自c#的示例:
n = Int32.Parse(numericUpDown1.Text);
m = Int32.Parse(numericUpDown2.Text);
dataGridView1.RowCount = n;
dataGridView1.ColumnCount = m;
在Java中我可以用来做什么?
答案 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根据模型更改进行刷新。这两个听众都很幼稚,但却使您走上了正确的道路。抱歉,我无法给出更好的例子。时间不多了...:-)
祝你好运!