java swing 表格相关操作

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);
            }
        });

 
java swing 表格相关操作_第1张图片
 

 

 

你可能感兴趣的:(java swing 表格相关操作)