[RESOLVIDO] Inverter uma String em uma tabela

[quote=vinigess]Clauneto, a tabela não tem nada escrito não, porque eu queria que somente uma tivesse, pois quando eu clicasse no botão as linhas que tivessem escritas na tabela descrição passaria para a tabela resultado, mas de forma invertida.

Se alguém poder me ajudar.

Obrigado![/quote]

Oi,

Como a tabela esta vazia (sem linhas), você precisará adicionar uma linha em branco antes de executar o método setValueAt().

Tchauzin!

Mas ela já não está vazia?

[code]
//configuração tabelaresultado;
{
TableModel tabelaDescricaoModel = new DefaultTableModel(

                new String[][] { { ""},{""},{ ""},{ ""},{""},  
               { ""},{ "" },{"" },{ "" },{ "" },{ "" },{ "" },  
               { "" },{ "" }  
                 
               },  
               new String[] { "Column 2"});  
                 
                 
               tabelaResultado = new JTable();  
               getContentPane().add(tabelaResultado);  
               tabelaResultado.setModel(tabelaDescricaoModel);  
               tabelaResultado.setBounds(451, 108, 443, 400);  
           }  
 
       } catch (Exception e) {  
           System.out.println("Tela não pode ser inicializada");  
           e.printStackTrace();  
       }  

Essa é a tabela que eu querp que apareça depois de clicar no botão executar, ao modo contrario

e esse é a que já tem as linhas

//configuração tabelaDescrição;
			{
				TableModel tabelaDescricaoModel = new DefaultTableModel(

				new String[][] { { "testw"},{ "" },{ "" },{ "" },{ "" },
				{ "teste" },{ "" },{ "" },{ "" },{ "" },{ "" },{ "" },
				{ "" },{ "" }
				
				},
				
				
				new String[] { "Column 1"});
				
				
				tabelaDescricao = new JTable();
				getContentPane().add(tabelaDescricao);
				tabelaDescricao.setModel(tabelaDescricaoModel);
				tabelaDescricao.setBounds(0, 108, 450, 400);
			
			

			}

Amigo, olhe o que a Lina escreveu (e outro colega antes da Lina algo parecido):

Uma tabela vazia no qual a Lina se refere é uma tabela que não tem nenhuma linha adicionada a ela.
Ou seja, como você quer setar um valor em uma linha que não existe?

Sendo assim, você tem sua tabela criada, agora crie a linha e adicione ela na tabela e depois popule o resultado.
Abraços!

Ta, e como eu posso fazer isso?

Desculpem, eu sou novo na linguagem.

[quote=claudneto]Adiciona a linha antes de fazer a inversão e atribuição do valor.

table.getModel().addRow()

Se não me engano é isso![/quote]

Já tentou isso? E como você está setando o valor atualmente amigo?!
Tente aqui ó:

	        DefaultTableModel tm = new DefaultTableModel();
	        String[] row1 = {"Valor 1", "Valor 2", "Valor 3"};
	        tm.addRow(row1);

Ele aceita qualquer array de object, então podes adicionar inclusive os objetos criados por você.
Abraços!

Edit: consulte aqui!

nel,

Fiz o codigo que você me falou, mas agora não esta aparencendo as linhas com o que eu escrevi e muito menos trocando de lado e de formas.

//configuração tabelaDescrição;
			{
				DefaultTableModel tm= new DefaultTableModel();

				 String[]row1 = {  "Valor1", "Valor2" , "Valor3"};
				 tm.addRow(row1);
				
				
				
				tabelaDescricao = new JTable();
				getContentPane().add(tabelaDescricao);
				tabelaDescricao.setModel(tm);
				tabelaDescricao.setBounds(0, 108, 450, 400);
			
			

			}
			
			//configuração tabelaresultado;
			{
				DefaultTableModel tm1 = new DefaultTableModel();

				
				String[]row1 = {  "Valor3", "Valor4" , "Valor5"};
				 tm1.addRow(row1);
				 
				
				
				
				tabelaResultado = new JTable();
				getContentPane().add(tabelaResultado);
				tabelaResultado.setModel(tm1);
				tabelaResultado.setBounds(451, 108, 443, 400);
			}

Essas são as minhas duas tabelas.

Vlw!!

e este é o erro que ta dando

java.lang.ArrayIndexOutOfBoundsException: 1 >= 0
	at java.util.Vector.elementAt(Vector.java:427)
	at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
	at sun.swing.SwingUtilities2.convertColumnIndexToModel(SwingUtilities2.java:1783)
	at javax.swing.JTable.convertColumnIndexToModel(JTable.java:2551)
	at javax.swing.JTable.getValueAt(JTable.java:2686)
	at view.TelaPrincipal$1.actionPerformed(TelaPrincipal.java:145)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

alguma ajuda??

SE ALGUEM PUDER ME AJUDAR.

Boa Tarde, vinigess!

Meu velho, tu tem que entender o que o pessoal ta exemplificando para você, eles estão dando exemplos do que você tem que fazer e não fazendo o código para você.

Você ta pegando o código que o pessoal posta e ta jogando no seu projeto. Estude um pouco JTable e você vai entender o que os exemplos estão fazendo ou até mesmo vai fazer sem precisar dos exemplos postados.

O que acontece é que o seu botão pega uma String de uma tabela, inverte e popula outra, sendo que para a outra tabela receber a String invertida, ela tem que ter um lugar para receber, ou seja, você tem que criar uma linha que vai receber a String em uma de suas células.

Faça como o amigo nel sugeriu, LEIA AQUI.

Outra sugestão é o artigo do GUJ sobre JTable, LEIA AQUI.

Abraço e boa sorte!

Vingdel, cara vlw pelas tuto, li e refiz a minha tabela, que agora esta assim

private DefaultTableModel model;
private JTable table;
String[] colunas = new String[] {"descricao", "resultado"};
						
							String[][] dados = new String[][] {
									{"teste", ""},
									{"teste1", ""},
									{"teste2", ""},
									{"teste3", ""}
							};
							DefaultTableModel model = new DefaultTableModel(dados, colunas);		
				
							
							
				
				table = new JTable(model);
				getContentPane().add(table);
				
				table.setBounds(12, 77, 870, 424);

Mas na parte de trocar os nome, que esta assim

[code]
botaoExecutar.addActionListener(new ActionListener() {

			                    @Override  
			                    public void actionPerformed(ActionEvent e) {  
			                        try {  
			                              
			                        	    StringBuffer stringBufferOne = new StringBuffer(table.getValueAt(1, 1).toString());    
			                        	      
			                        	    table.setValueAt(""+stringBufferOne.reverse(), table.getSelectedRow(), 2);  				                              
			                        
			                       } catch (Exception e2) {  
			                           e2.printStackTrace();  
			                      }  
			                         
			                         
			                   }  
			               });  
		[/code]

Agora coloquei uma tabela apenas mas com duas colunas, acho que assim ficaria mais facil né?

Abraços!

alguma ajuda?

algum moderador, ou expert?

Bom Dia!

Qual o problema restante?

Abraço!

Olá amigo, vamos ver se entendi seu problema…

você quer digitar uma string no lado descrição e aparecer ela invertida do outro lado no resultado…

certo ?

Tino_

é isso mesmo, peguei uma tabela JTable coloquei umas 10 rows e 2 column e gostaria de fazer esse procedimento sim,
podes me ajudar?

Obrigado!

Vou tentar te ajudar amigo, mas agora to sem tempo…

logo te respondo…

Abraço!

Bother olha como eu fiz…

eu criei uma tela simples no netbeans e importei pro eclipse… uma table com 2 colunas e 4 linhas já pré feitas…
e um botão…

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * TelaTabela.java
 *
 * Created on May 25, 2011, 9:28:30 AM
 */

package teste;
/**
 *
 * @author Milton.neto
 */
public class TelaTabela extends javax.swing.JFrame {

	public ActionListenerTela action;

    /** Creates new form TelaTabela */
    public TelaTabela() {
    	
    	action = new ActionListenerTela(this);
    	
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"", ""},
                {"", ""},
                {null, null},
                {null, null}
            },
            new String [] {
                "Descriçao", "Resultado"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        jButton1.setText("jButton1");
        jButton1.addActionListener(action);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(15, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addGap(158, 158, 158)
                .addComponent(jButton1)
                .addContainerGap(169, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jButton1)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TelaTabela().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    public javax.swing.JButton jButton1;
    public javax.swing.JScrollPane jScrollPane1;
    public javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables

}

eu costumo colocar o ActionListener em uma classe separada, não deixa o codigo bagunçado e tudo junto.

ActionListener:

package teste;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ActionListenerTela implements ActionListener{


	TelaTabela tabela;
	
	public ActionListenerTela(TelaTabela tabela){
		this.tabela = tabela;
	}
	
	
	public void actionPerformed(ActionEvent e) {

		if(tabela.jButton1 == e.getSource()){
			
			String texto1 = tabela.jTable1.getValueAt(tabela.jTable1.getSelectedRow(), 0).toString();
			
			StringBuffer textoPronto = new StringBuffer(texto1);
			textoPronto.reverse();
			
			System.out.println(textoPronto);
			
			tabela.jTable1.setValueAt(textoPronto, 0, 1);
			
		}
	}
}

to pegando o valor da linha selecionada da primera coluna e recebendo no meu >>> String <<< texto1 … não posso fazer

StringBuffer texto1 = (StringBuffer) tabela.jTable1.getValueAt(tabela.jTable1.getSelectedRow(), 0);

Porque ele nao aceita o Cast…
então primeiro recebo ele em um String depois dou estancio uma nova StringBuffer recebendo aquela String…
após fazer isso é só usar o codigo que o pessoal te passou

 .reverse(); 

e jogar devolta na sua linha que JÁ está pronta…

Abraço espero ter ajudado.

brother, so uma pergunta, você fez isso no netbeans?

a tela sim…
é só um exemplo meu querido…
se você copiar o codigo e colar no seu eclipse funciona!

tendeu ?

só fiz a tela no netbeans pq era mais rapido…
importei o .java dela pro eclipse e fiz o resto…

funcionou ?