[QUASE RESOLVIDO] Pegar valores da linha selecionada da JTable para JTextField

1 resposta
marcusluiz83

Boa tarde!

Estou me tornando ex-usuário da DefaulTableModel. Nela eu usava o seguinte código para exibir os valores da linha selecionada para os JTextFields:

private void linhaSelecionada(JTable tabela) {
        if (tabela.getSelectedRow() != -1) {
            tfNome2.setText(socios.get(tabela.getSelectedRow()).getNome());
            tfTelefone2.setText(socios.get(tabela.getSelectedRow()).getTelefone());
        }
    }

Só que me retorna o seguinte erro na TableModel que eu criei:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at tabelas.NewJFrame.linhaSelecionada(NewJFrame.java:248)
        at tabelas.NewJFrame.access$100(NewJFrame.java:32)
        at tabelas.NewJFrame$1.valueChanged(NewJFrame.java:71)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:137)
        at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:668)
        at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:923)
        at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1136)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
        at java.awt.Component.processMouseEvent(Component.java:6289)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6054)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4652)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4482)
        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:4482)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
        at java.awt.EventQueue.access$000(EventQueue.java:85)
        at java.awt.EventQueue$1.run(EventQueue.java:603)
        at java.awt.EventQueue$1.run(EventQueue.java:601)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
        at java.awt.EventQueue$2.run(EventQueue.java:617)
        at java.awt.EventQueue$2.run(EventQueue.java:615)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
        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)

O que muda neste código da DefaultTableModel para a própria TableModel?

Espero que possam me ajudar, pois não quero nunca mais usar a DefaultTableModel.

Obrigado!

1 Resposta

marcusluiz83

Pessoal,

Achei a solução aqui no GUJ mesmo da seguinte forma

private void linhaSelecionada(JTable tabela) { if (tabela.getSelectedRow() != -1) { tfNome2.setText(tbSocios.getModel().getValueAt(tbSocios.getSelectedRow(),0).toString()); tfTelefone2.setText(tbSocios.getModel().getValueAt(tbSocios.getSelectedRow(),1).toString()); tfMensalidade.setText(tbSocios.getModel().getValueAt(tbSocios.getSelectedRow(),3).toString()); } }
Só não consegui exibir a data no formato dd/MM/yyyy no JTextField. Alguém pode me dar uma luz?

Obrigado!

Criado 21 de maio de 2011
Ultima resposta 21 de mai. de 2011
Respostas 1
Participantes 1