Adicionar arquivos ao JTable em posições diferentes

Olá,
Estou com dúvida sobre o JTable
Se eu selecionar por exemplo 3 arquivos de uma vez, da certo. adicionado na posição zero, um e dois
O problema é se eu adicionar um arquivo de cada vezes eles são adicionados todos posição zero do Object[]
existe a possibilidade de apontar a posição de onde salvar o arquivo adicionado nesse caso ?

segue o código

	File[] arquivos = arquivo.getSelectedFiles();

for (int i = 0; i < arquivos.length; i++) {
dtm.addRow(new Object[] { new Boolean(false), arquivos[i].getAbsolutePath() });

}
executaArquivo.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent acaoMenuStart) {

      if (acaoMenuStart.getSource() == executaArquivo) {

	for (int x = 0; x < dtm.getRowCount(); x++) {
if ((tc.getCellEditor().isCellEditable(acaoMenuStart) == true)
   && (boolean) table.getModel().getValueAt(x, 0).equals(true)) {

	try {

	System.out.println(x);
	Runtime.getRuntime().exec("cmd.exe /c start " + arquivos[x].getAbsolutePath());

	} catch (IOException e) {
          System.out.println("falhou");
	e.printStackTrace();
	}
      }

     }
    }

    }
});

vamos la

primeiro, o que é start ? pq vc tem que verificar isso?

segundo, vc nao precisa fazer if ( qqcoisa == true ), basta if ( qqcoisa ) ou if ( (boolean) qqcoisa )

( eu tenho aqui umas duvidas se isso funciona ou se vc precisa fazer um cast para Boolean e ai chamar booleanValue pois tem autobox nesses casos… tem que testar )

terceiro, o que acontece dentro do loop?

mostra os outputs com 2 arquivos e nesses dois cenarios pra gente tentar entender ( eu acho q vc deveria socar uns breakpoints e rodar um debugger )

Olá,
então, atualizei o código, eu uso um JFileChooser para selecionar os arquivos
Se eu selecionar por exemplo 3 arquivos de uma vez, da certo. adicionado na posição zero, um e dois
O problema é se eu adicionar um arquivo de cada vezes eles são adicionados todos posição zero do Object[]

File[] arquivos = arquivo.getSelectedFiles();

    for (int i = 0; i < arquivos.length; i++) {
	dtm.addRow(new Object[] { new Boolean(false), arquivos[i].getAbsolutePath() });

	}
	executaArquivo.addActionListener(new ActionListener() {
	 public void actionPerformed(ActionEvent acaoMenuStart) {

	      if (acaoMenuStart.getSource() == executaArquivo) {

		for (int x = 0; x < dtm.getRowCount(); x++) {
    if ((tc.getCellEditor().isCellEditable(acaoMenuStart) == true)
       && (boolean) table.getModel().getValueAt(x, 0).equals(true)) {

		try {

		System.out.println(x);
		Runtime.getRuntime().exec("cmd.exe /c start " + arquivos[x].getAbsolutePath());

		} catch (IOException e) {
	          System.out.println("falhou");
		e.printStackTrace();
		}
	      }

         }
        }

   }
});