Java swing 表格相关操作
(1)设置表格数据
- public static void setTableData3(JTable parameterTable_1,Map requestMap,boolean hasTextField,boolean isTF_table_cell,String[]columnNames) {
- System.out.println("setTableData3");
- int length = requestMap.size();
- if (length > 0) {
- Object[][] datas = new Object[length][];
- int count = 0;
- for (Object obj : requestMap.keySet()) {
- Object val = requestMap.get(obj);
- Object[] objs = new Object[3];
- RadioButtonPanel panel = new RadioButtonPanel();
- panel.init(hasTextField);
- objs[2] = panel;
- Color backColor=CustomColor.getMoreLightColor();
- // objs[2]="c"+i;
- if(isTF_table_cell){
- JTextArea keyTA=new AssistPopupTextArea(String.valueOf(obj));
- keyTA.setBackground(backColor);
- objs[0] = new JScrollPane(keyTA);
- }else{
- objs[0] =obj;
- }
- if (ValueWidget.isNullOrEmpty(val) || val.equals("null")
- || val.equals("undefined")) {//配置文件中保存的是"null",而不是null
- val = SystemHWUtil.EMPTY;
- }
- if(isTF_table_cell){
- JTextArea valTA=new GenerateJsonTextArea(String.valueOf(val));
- valTA.setBackground(backColor);
- objs[1] = new JScrollPane(valTA);
- }else{
- objs[1] = val;
- }
- datas[count] = objs;
- count++;
- }//for
- // setTableData2(parameterTable_1,datas,columnNames);
- appendTableData(parameterTable_1, datas, columnNames);
- }//if
- }
- private static void setTableData2(JTable parameterTable_1,Object[][] datas,String[]columnNames) {
- DefaultTableModel model = new DefaultTableModel(datas, columnNames);
- parameterTable_1.setModel(model);
- parameterTable_1.setRowHeight(30);
- // rendTable();
- }
- /***
- * 追加,原有输入框仍保留,所以可以使用Ctrl+Z
- * @param datas
- */
- public static void appendTableData(JTable parameterTable_1,Object[][] datas,String[]columnNames){
- int rowCount=parameterTable_1.getRowCount();
- if(rowCount<1){//如果表格本来为空
- setTableData2(parameterTable_1,datas,columnNames);
- }else{//表格不为空
- for(int i=0;i<rowCount;i++){
- setTableValueAt(parameterTable_1,i, 0, datas);
- setTableValueAt(parameterTable_1,i, 1, datas);
- }
- DefaultTableModel tableModel = (DefaultTableModel) parameterTable_1.getModel();
- for(int i=rowCount;i<datas.length;i++){
- tableModel.addRow(datas[i]);
- }
- }
- }
- /***
- * 设置表格单元格的值
- * @param rowIndex
- * @param columnIndex
- * @param datas
- */
- private static void setTableValueAt(JTable parameterTable_1,int rowIndex,int columnIndex,Object[][] datas){
- Object keyObj=datas[rowIndex][columnIndex];
- if(keyObj instanceof JScrollPane){
- JScrollPane js=(JScrollPane)keyObj;
- JTextComponent tf=(JTextComponent)js.getViewport().getComponent(0);
- keyObj = tf.getText();
- }
- String key=null;
- if(keyObj instanceof String){
- key=(String)keyObj;
- }else{
- key=String.valueOf(keyObj);
- }
- Object valueAtObj=parameterTable_1.getValueAt(rowIndex, columnIndex);
- if(valueAtObj instanceof JScrollPane){
- JScrollPane keyScrollPane=(JScrollPane)valueAtObj;
- JTextArea keyTA=(JTextArea)keyScrollPane.getViewport().getComponent(0);
- keyTA.setText(key);
- }else{
- parameterTable_1.setValueAt(keyObj, rowIndex, columnIndex);
- }
- }
应用:
- if(requestInfoBean.isRequestBodyIsJson()){//"请求参数"表格不可用
- requestBodyDataTA.setText(requestInfoBean.getRequestBodyData());
- }else{
- TableUtil3.setTableData3(parameterTable_1,requestInfoBean.getRequestParameters(),true,true,columnNames);
- rendTable();
- }
- public void layoutTable( ) {
- // Object[][] datas=new Object[1][2];
- Object[][] datas=new Object[1][3];
- for(int i=0;i<datas.length;i++){
- Object[]objs=new Object[3];
- RadioButtonPanel panel=new RadioButtonPanel();
- panel.init();
- objs[2]=panel;
- if(AutoTestPanel.isTF_table_cell){
- objs[0]= new JScrollPane(new AssistPopupTextArea()) ;
- objs[1]=new JScrollPane(new GenerateJsonTextArea());
- }
- datas[i]=objs;
- }
- TableUtil3.appendTableData(parameterTable_1,datas,columnNames);
- // setTableData2(datas);
- // repaintTable();
- }
(2)清空表格数据
- /***
- * 清空单元格<br>
- * @param parameterTable_1
- * @param rowIndex
- * @param columnIndex
- */
- private static void cleanTableValue(JTable parameterTable_1,int rowIndex,int columnIndex){
- Object valueAtObj=parameterTable_1.getValueAt(rowIndex, columnIndex);
- if(valueAtObj instanceof JScrollPane){
- JScrollPane keyScrollPane=(JScrollPane)valueAtObj;
- JTextArea keyTA=(JTextArea)keyScrollPane.getViewport().getComponent(0);
- keyTA.setText(SystemHWUtil.EMPTY);
- }else{
- parameterTable_1.setValueAt(null, rowIndex, columnIndex);
- }
- }
- /***
- * 清空表格数据<br>
- * @param parameterTable_1
- */
- public static void cleanTableData(JTable parameterTable_1){
- int rowCount=parameterTable_1.getRowCount();
- if(rowCount>0){
- for(int i=0;i<rowCount;i++){
- cleanTableValue(parameterTable_1,i, 0);
- cleanTableValue(parameterTable_1,i, 1);
- }
- }
- }
应用:
- JButton cleanUpTable_66 = new JButton("清空表格");
- cleanUpTable_66.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- TableUtil3.cleanTableData(parameterTable_1);
- parameterTable_1.repaint();
- }
- });
(3)给表格增加一行
- /***
- * 表格增加一行
- */
- public static void addParameter(JTable parameterTable_1,String key,boolean hasTextField,boolean isTF_table_cell) {
- System.out.println("增加一行");
- DefaultTableModel tableModel = (DefaultTableModel) parameterTable_1.getModel();
- RadioButtonPanel panel = new RadioButtonPanel();
- panel.init(hasTextField);
- String val=null;
- if(!ValueWidget.isNullOrEmpty(key)){
- if(key.contains("=")||key.contains(":")){
- String[]strs=key.split("[:=]");
- key=strs[0];
- val=strs[1];
- }
- }
- Object[] rowData =null;
- if(isTF_table_cell){
- Color clor=CustomColor.getMoreLightColor();
- JTextArea keyTA=new AssistPopupTextArea(key);
- keyTA.setBackground(clor);
- JComponent keyTA2=new JScrollPane(keyTA);
- JTextArea valTA=new GenerateJsonTextArea(val);
- valTA.setBackground(clor);
- JComponent valScroll=new JScrollPane(valTA);
- rowData =new Object[]{keyTA2, valScroll, panel};
- }else{
- rowData =new Object[]{key, val, panel};
- }
- tableModel.addRow(rowData);
- }
应用:
- /***
- * 表格增加一行
- */
- private void addParameter(String key) {
- TableUtil.addParameter(this.parameterTable_1, key,true,AutoTestPanel.isTF_table_cell);
- }
- JButton addRowButton = new JButton("添加");
- addRowButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- addParameter(null);
- }
- });