Método getSelectedColumnCount() está retornando apenas uma linha

2 respostas
levimendes

olá pessoal,

O método getSelectedColumnCount() está retornando apenas uma linha…mesmo que eu selecione várias linhas do JTable…

ele (o método ) está retornando sempre um.

Alguém consegue me dizer o que está acontencendo?

public static void copiar(JTable table) {	
		StringSelection stsel;
		StringBuffer sb = new StringBuffer();
		Clipboard system;
		int numrows = table.getSelectedRowCount();
		int numcols = table.getSelectedColumnCount();
		int[] rowsSelected = table.getSelectedRows();
		int[] colsSelected = table.getSelectedColumns();
		
		sb.append("====================\n");
		sb.append("Restrições: ");
		
		for(int r = 0; r < numrows; r++) {	
			for (int c = 0; c < numcols; c++) {
				sb.append(table.getValueAt(rowsSelected[r], colsSelected[c]));
				if (c < numcols - 1) 
					sb.append("\t");
			}
			
			sb.append("\n");
		}

        stsel  = new StringSelection(sb.toString());
        system = Toolkit.getDefaultToolkit().getSystemClipboard();
        system.setContents(stsel,stsel);
	}

2 Respostas

levimendes

Descobri, thank God…

O método getSelectedColumnCount() considera apenas as colunas onde nós arrastamos o mouse como coluna
selecionada, para solucionar esta questão eu substitui o getSelectedColumnCount() pelo getColumnCount(),
desta maneira será pego todos as colunas, não apenas aquelas ao qual arrastamos o mouse.

Hehehe.

public static void copiar(JTable table) {	
		StringSelection stsel;
		StringBuffer sb = new StringBuffer();
		Clipboard system;
		int numrows = table.getSelectedRowCount();
		int numcols = table.getColumnCount();
		int[] rowsSelected = table.getSelectedRows();
		int[] colsSelected = table.getSelectedColumns();
		

		sb.append("====================\n");
		sb.append("Restrições: \n");
		
		for(int r = 0; r < numrows; r++) {	
			for (int c = 0; c < numcols; c++) {
				sb.append(table.getValueAt(rowsSelected[r], colsSelected[c]));
				if (c < numcols - 1) 
					sb.append("\t");
			}
			
			sb.append("\n");
		}

        stsel  = new StringSelection(sb.toString());
        system = Toolkit.getDefaultToolkit().getSystemClipboard();
        system.setContents(stsel,stsel);
	}
levimendes

correção:

public static void copiar(JTable table) {    
		
	    StringSelection stsel;   
	    StringBuffer sb = new StringBuffer();   
	    Clipboard system;   
	       
	    sb.append("Titulo qualquer\n"); 
	    sb.append("====================\n");   
	    sb.append("Restrições: \n");   
	    
	    for (int i = 0; i < table.getColumnCount(); i++) {
	    	sb.append(table.getColumnName(i).toString());
	    	sb.append("\t");
	    }
	    
	    sb.append("\n");
	    
	    for (int i : table.getSelectedRows()) {
	    	for (int j = 0; j < table.getColumnCount(); j++) {
	    		sb.append(table.getValueAt(i ,j));
	    		sb.append("\t");
	    	}
	    	sb.append("\n");
	    }
	  
       stsel  = new StringSelection(sb.toString());   
       system = Toolkit.getDefaultToolkit().getSystemClipboard();   
       system.setContents(stsel,stsel);   
	}
Criado 26 de novembro de 2010
Ultima resposta 29 de nov. de 2010
Respostas 2
Participantes 1