Como Adicionar itens em JTable [RESOLVIDO ^^]

4 respostas
W

Ola pessoal estou com um problema simples,
eu não estou sabendo incluir elementos em uma tabela,
quem poder me ajuda eu agradeço, ai esta o codigo esta ai estou tentando usar um metodo incluir acho que esse é o caminho certo…

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

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

/**
 *
 * @author weverson
 */
public class Frame_Grade extends JFrame implements ActionListener {

    private JTable tabela;

    String titulo [] = {"RGM","Nome","Exércicios","Prova Parcial","Prova Regimental","Média"};

    

    private JLabel
            lblNome = new JLabel("Nome:"),
            lblRgm = new JLabel("RGM: "),
            lblExer = new JLabel("Exércicios"),
            lblPParcial = new JLabel("Prova Parcial"),
            lblPRegimen = new JLabel("Prova Regimental");

    private JTextField
             txtNome = new JTextField(25),
             txtRgm = new JTextField(10),
             txtExer =  new JTextField(10),
             txtPParcial = new JTextField(5),
             txtPRegimen = new JTextField(5);

    private JButton
            btnIncluir = new JButton("Incluir"),
            btnCalcula = new JButton("Calcular Média");

    private JPanel
            painel = new JPanel();


Object dados[][]={};

/*txtNome.getText(),txtRgm.getText(),txtExer.getText(),
                                     txtPParcial.getText(),txtPRegimen.getText(),""*/

    public Frame_Grade(){
        setTitle("Exércicio com Grades");
        setSize(700,450);
        setLocation(200,200);
        setResizable(true);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(null);

 //JLabel's ------------>
        getContentPane().add(lblRgm);
        lblRgm.setBounds(15,15,40,20);

        getContentPane().add(lblNome);
        lblNome.setBounds(180,15,60,20);

        getContentPane().add(lblExer);
        lblExer.setBounds(20,50,80,20);

        getContentPane().add(lblPParcial);
        lblPParcial.setBounds(150,50,120,20);

        getContentPane().add(lblPRegimen);
        lblPRegimen.setBounds(280,50,150,20);

 //JLabel's <-----//------

//JTextField ---------------->

        getContentPane().add(txtRgm);
        txtRgm.setBounds(45,15,100,20);

        getContentPane().add(txtNome);
        txtNome.setBounds(220,15,200,20);

        getContentPane().add(txtExer);
        txtExer.setBounds(20,70,100,20);

        getContentPane().add(txtPParcial);
        txtPParcial.setBounds(150,70,100,20);

        getContentPane().add(txtPRegimen);
        txtPRegimen.setBounds(280,70,120,20);



 //JTextField's <-----//------

//JButton's ---------------->

        getContentPane().add(btnIncluir);
        btnIncluir.setBounds(425,65,100,25);
        btnIncluir.addActionListener(this);
        
        getContentPane().add(btnCalcula);
        btnCalcula.setBounds(550,65,125,25);
        btnCalcula.addActionListener(this);


 //JButton's <-----//------
        

        tabela =  new JTable(dados , titulo);

        tabela.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        tabela.setFocusable(false);
       

        painel.setLayout(new BorderLayout());
        painel.add(new JScrollPane(tabela),"Center");

        getContentPane().add(painel);
        painel.setBounds(15, 120, 650, 270);

        setVisible(true);

    }
   
    public void incluir(){
        JTable tb = new JTable();
        
    };

    public void calcula(){
        
        /*
                {Float.parseFloat(txtRgm.getText())},
            {String.valueOf(txtNome.getText())},
            {Float.parseFloat(txtExer.getText())},
            {Float.parseFloat(txtPParcial.getText())},
            {Float.parseFloat(txtPRegimen.getText())};
        */
    }


    public static void main(String args[]){
        Frame_Grade frame = new Frame_Grade();
    }
    
        public void actionPerformed(ActionEvent evt){

     if(evt.getSource() == btnIncluir)incluir();

     if(evt.getSource() == btnCalcula)calcula();
    }
}

4 Respostas

J
//jTable= sua tabela
     
DefaultTableModel model = (DefaultTableModel)jTable.getModel();
model.addRow("seus dados para inserir na jtabela " );
jTable.validate();

Recomento nao usar o DefaultTableModel, e sim fazer um
esse foi so um exemplo de como adicionar um item,
mas lembre que no addRow voce tem que inserir um vetor de String,
e logo depois mandar validar para atualizar ela

V

Faltou o principal? Cadê o seu TableModel?

Se você nem sabe o que é um TableModel, ou está usando o (argh) DefaultTableModel, siga os links da minha assinatura. Primeiro você tem que aprender como a JTable funciona para só depois pensar em adicionar e remover itens nela.

W

Bom cara vo dar uma olhada como faz o JTable Model …

Mais então usando DefaultTableModel fazendo do jeito que vc me flo ele esta me retornando esse erro

run:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel
        at Frame_Grade.incluir(Frame_Grade.java:139)
        at Frame_Grade.actionPerformed(Frame_Grade.java:171)
        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:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        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:4574)
        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)
CONSTRUÍDO COM SUCESSO (tempo total: 17 segundos)


//meu metodo incluir fico assim >>

    public void incluir(){
       DefaultTableModel tb =(DefaultTableModel)tabela.getModel();
        tb.addRow(new Object[]{
            String.valueOf(txtNome.getText()),
            String.valueOf(txtRgm.getText()),
            String.valueOf(txtExer.getText()),
            String.valueOf(txtPParcial.getText()),
            String.valueOf(txtPRegimen.getText()),
            String.valueOf("")
              
             });


        tabela.validate();


    };
W

RESOLVIDO ^^

vou começar a ver como se meche com TABLEMODE

Criado 26 de outubro de 2010
Ultima resposta 26 de out. de 2010
Respostas 4
Participantes 3