问题描述
我用的JavaSwing写的界面,现在想实现这样一个需求:比如说,我一个表格有4行两列,第二列的列类型是Boolean.Class,也就是复选框了,然后我希望第二到第四行都被勾选的情况下,第一行自动被勾选,反过来第一行被勾选的话,第二至第四行也均被勾选(这个我能实现了),请问前面一种情况要怎么写程序,在线等,求大侠们给点思路或者小程序,先谢过大家了~~~
解决方案
解决方案二:
下面是我的半成品程序,麻烦大家帮我看一下后半部分怎么写:packageaa;importjava.awt.BorderLayout;importjava.awt.Dimension;importjavax.swing.JFrame;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.event.TableModelEvent;importjavax.swing.event.TableModelListener;importjavax.swing.table.DefaultTableModel;publicclassCheckTest{publicstaticString[]names={"根节点","叶节点1","叶节点2","叶节点3"};publicstaticvoidmain(String[]args){JFrameframe=newJFrame("勾选测试");frame.setPreferredSize(newDimension(300,240));frame.setLayout(newBorderLayout());String[]columns={"中文名称","是否选择"};finalDefaultTableModeltableModel=newDefaultTableModel(columns,0);for(inti=0;i<names.length;i++){tableModel.addRow(newObject[]{names[i],false});}tableModel.addTableModelListener(newTableModelListener(){@OverridepublicvoidtableChanged(TableModelEvente){//TODOAuto-generatedmethodstubintrow=e.getLastRow();intcolumn=1;if(row==0){//设置编辑第一行第二列时,更改下面几行的值if(((Boolean)tableModel.getValueAt(row,column)).booleanValue()){for(inti=1;i<4;i++){tableModel.setValueAt(true,i,column);}}else{for(inti=1;i<4;i++){tableModel.setValueAt(false,i,column);}}}//怎么通过下面几行控制第一行的更改???}});finalJTabletable=newJTable(tableModel){privatestaticfinallongserialVersionUID=1L;publicbooleanisCellEditable(introw,intcolumn){return(column==1);//设置第二列可编辑}publicClass<?>getColumnClass(intcolumn){if(column==1)returnBoolean.class;//设置第二列为Boolean类型,即CheckBoxelsereturnsuper.getColumnClass(column);}};table.getColumnModel().getColumn(1).setMinWidth(60);//设置第二列的宽度table.getColumnModel().getColumn(1).setPreferredWidth(70);table.getColumnModel().getColumn(1).setMaxWidth(70);JScrollPanetableScrollPane=newJScrollPane(table);frame.pack();frame.setLocationRelativeTo(null);frame.add("Center",tableScrollPane);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
解决方案三:
这里好像存在死循环,就是点击第一行第二列更改下面的三行,但是下面三行的任意一行更改会和前面这种情况相冲突,有点死循环的赶脚,不造怎么解决,来人啊。。。求辅助啊。。。