HashMap<Integer, List<MyFields>> hmapp = new HashMap<>();
我有一个由用户填写的表单,每个用户都有一个分配给他们的keyID,他们必须在填写文本字段时输入。除了包含keyID的文本字段外,他们总共可以回答4个文本字段。
如果同一用户提交相同的文本字段值,则列表不会更改。如果用户提交了不同的表单值,则会将其添加到该keyID的列表中。
例:
keyID:123
firstField:cat
secondField:dog
第三场:43
第四场:鱼
Hashmap将等于: {123 = [猫狗43鱼]}
如果他们提交的内容完全相同,则hashmap不会改变。
如果下一次提交是针对相同的keyID,其中任何字段值与现有值不同,则如下:
keyID:123
firstField:cat
secondField:dog
第三场:43
第四场:鸟类
然后hashmap将如下所示: {123 = [猫狗43鱼,猫狗43鸟]}
另一个示例条目:
keyID:456
firstField:house
secondField:store
第三场:53
第四场:鞋子
然后hashmap将如下所示: {123 = [猫狗43鱼,猫狗43鸟],456 = [家庭商店53鞋]}
我使用这些keyID填充列表,当列表中选择了一个项目时,我会触发一个事件来填充一个JTable,它是AbstractTableModel。
表格中有四列与四个文本字段有关。 我想根据列表值填充行。 因此,如果选择了keyID 123,则row1将是相应列下的cat dog 43 fish。 row2将是猫狗43只鸟,在各自的栏目下。
我该如何做到这一点?
private void formListValueChanged(javax.swing.event.ListSelectionEvent evt) { try { int keyID = Integer.parseInt(formList.getSelectedValue()); List<MyFields> lvals = hmapp.get(keyID); Object[] lvals2 = hmapp.get(keyID).toArray(); AbsTable model = (AbsTable) formTable.getModel(); for (int i = 0; i < lvals.size(); i++) { Object[] row = new Object[3]; for (int j = 0; j < row.length; j++) { row[j] = lvals; } System.out.println(lvals2.length); for (Object z : lvals2) { System.out.println(z); } } Iterator<MyFields> objVals = lvals.iterator(); while (objVals.hasNext()) { System.out.println(objVals.next()); } } catch (NumberFormatException e) { System.out.println("Err: Null list selection."); } } private class AbsTable extends AbstractTableModel{ private String[] vals; private final int NUM_COL = 4; public String[] colNames = new String[]{"first", "second", "third", "fourth"}; private final Class<?>[] colTypes = new Class<?>[]{String.class, String.class, Integer.class, String.class}; public AbsTable(){ vals=hmapp.keySet().toArray(new String[hmapp.size()]); } @Override public int getRowCount() { return hmapp.size(); } @Override public int getColumnCount() { return NUM_COL; } public void removeRow(int row) { fireTableRowsDeleted(row, row); } @Override public Object getValueAt(int rowIdx, int columnIdx) { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getColumnName(int column) { return colNames[column]; } @Override public Class<?> getColumnClass(int columnIdx) { return colTypes[columnIdx]; } }