Entrada de dados no Jtable

6 respostas
D

E aí pessoal?Tranquilo?
Procurei até mas não encontrei um jeito de entrar dados em uma tabela.

Eu estou querendo que abra uma janelinha estilo JOptionPane no meu programa para poder receber dados em uma tabelinha.
Alguém sabe como?

6 Respostas

Mantu

Pega esse anexo aqui, passa o texto abaixo na primeira janelinha do aplicativo pra vc ve ele funcionando, e depois abre o jar e divirta-se com o código fonte.
Espero que te ajude…

para ver a aplicação funcionando, passe, por exemplo, este texto na primeira janela

D

Desculpe a minha ignorância mas como eu abro esse arquivo jar e coloco esse código nele. É a primeira vez que eu vejo um arquivo .jar. :oops:

Mantu

hehehe, relaxa!
o .jar nada mais é que um .zip com algumas coisinhas a mais. Você pode extrair seu conteudo com um WinZip, ou um WinRar da vida para poder ver o código fonte.
Para executá-lo, geralmente vc pode dar um clique duplo no jar que ele executa de boa. Se não rolar, vc pode ir na linha de comando (DOS) e, no diretório do jar, executar

java -cp . -jar IReportDesignBacking.jar

qq dúvida, poste mais, ok?

brlima

o que faz esse teu programa ai, Mantu? Qual a ideia dele?

Mantu

Nada de útil fora do contexto onde ele foi concebido (Até duvido da utilidade dele no contexto, hehehehe).
Utilizava no meu trampo o i-report pra montar relatórios e os caras queriam tudo centralizadinho e tinha que ficar calculando o left de cada campo pra ficar centralizado certinho. Dai fiz esse trem aí pra eu entrar primeiro com a declaração dos campos (que geralmente copiávamos da classe e colávamos no programinha), depois indicávamos o numero de caracteres de cada campo, e por último ajustávamos os lefts e heights, distribuindo eventuais pixels que sobraram depois da centralização…
Tosco, mas evitava de ficar calculando a posição exata de cada campo no relatório, e também evitava de a galera usar o “olhômetro”, hehehehehe

D

Brigadão mantu mas eu acabei de achar um artigo que explica como fazer o que eu queria.Eu achei que seria melhor sem desmerecer o seu trabalho mas é que eu estou fazendo trabalho de estatística.

http://www.guj.com.br/java.tutorial.artigo.140.1.guj
http://www.guj.com.br/java.tutorial.artigo.147.1.guj

Agora minha duvida é outra. Quanto ao netbeans como eu faço para que ele abra outra gui.Veja só eu peguei esses arquivos http://www.guj.com.br/content/articles/jtable/tutorial_guj_jtable_pt2.zip. Sempre que eu vou instanciar a classe
MyJTableViewer ele da erro mas eu consegui compilar tranquilo através do DOS sem a GUItrabcomp.
Segue o cod.:

GUItrabcomp.java

/*
 * GUItrabcomp.java
 *
 * Created on 9 de Abril de 2006, 10:44
 */
package trabcomp;
import javax.swing.*;
/**
 *
 * @author  danimac13
 */
public class GUItrabcomp extends javax.swing.JFrame {
    public int dadosAgrup[][];
    public int dadosnAgrup[];
    /** Creates new form GUItrabcomp */
    public GUItrabcomp() {
        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.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem5 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Trabalho Computacional de Estat\u00edstica");
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"test", "teste", null, null, null, null},
                {null, null, null, null, null, null},
                {null, null, null, null, null, null},
                {null, null, null, null, null, null}
            },
            new String [] {
                "Intervalo", "Frequência", "FA", "FR", "FRA", "Média"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                true, true, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);

        jMenu1.setText("Arquivo");
        jMenuItem1.setText("Novo");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("Entrar com os Dados n\u00e3o Agrupados");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem2);

        jMenuItem3.setText("Entrar com os Dados Agrupados");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem3);

        jMenuItem4.setText("Sair");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem4);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Ajuda");
        jMenuItem5.setText("Sobre");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });

        jMenu2.add(jMenuItem5);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 227, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(99, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>                        

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
// TODO add your handling code here:
    }                                          

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {                                           
----------------- >  MyjTableViewer viewer=new MyjTabelViewer();<---------O erro.
    }                                          

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    System.exit(0);
    }                                          

    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    JOptionPane.showMessageDialog(null,"Editor de Distribuição de Frequências\nversão 2006.1.1\nDesenvolvido por: Daniel Alves da Fonseca Maciel.\nFACULDADE COTEMIG (somente para fins didáticos)");
    }                                          

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    String dadosInit,receb="";
    int j=0;
    dadosnAgrup=new int[20];
    char teste;
    dadosInit=JOptionPane.showInputDialog("Digite os dados não agrupados separados por ; .");
    for(int i=0;i<dadosInit.length();i++)
        {
            if(dadosInit.charAt(i)!=';')
               receb+=dadosInit.charAt(i);
            else
            {
               dadosnAgrup[j]=Integer.parseInt(receb);
               receb="";
               j++;
            }
        }
        dadosnAgrup[j]=Integer.parseInt(receb);
    }                                          
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUItrabcomp().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration                   
    
}

MyJTableViewer.java

import java.awt.BorderLayout;
import java.util.ArrayList;

import javax.swing.*;

/**
 * <br>Créditos  : Bruno R. Lima
 * <br>Construção: 25/05/2004
 * <p>
 * Classe de exemplo do tutorial sobre JTable.
 * Exemplo 2.
 * </p>
 * @author Bruno R. Lima
 */
public class MyJTableViewer extends JFrame {

	private JTable tabela = null;
	private JScrollPane scrollTabela = null;

	/**
	 * 
	 * Inicializa a classe

	 *
	 */
	public MyJTableViewer() {
		// Cria o frame  com o titulo

		super("Tutorial:Simplificando A JTable parte 2");
		// Cria o tamanho do frame
		setSize(600, 400);
		// Seta o conteudo do frame no centro:

		// Adiciona o JScrollPane que contem a JTable
		getContentPane().add(getScrollTabela(), BorderLayout.CENTER);
		// Mostra o formulario na tela
		show();
	}

	/**
	 * Bloco principal
	 * @param args
	 */

	/**
	 * Cria a jtable
	 * @return
	 */
	private JTable getTabela() {
		if (tabela == null) {
			tabela = createJTable();
		}
		return tabela;
	}

	/**
	 * Cria o scroll onde irá conter a jtable
	 * @return
	 */
	private JScrollPane getScrollTabela() {
		if (scrollTabela == null) {
			scrollTabela = new JScrollPane(getTabela());
			scrollTabela.setVerticalScrollBarPolicy(
				ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		}
		return scrollTabela;

	}


	/**
	 * Cria a JTable
	 * @return
	 */
	public JTable createJTable() {

		ArrayList dados = new ArrayList();
		String[] colunas = new String[] { "Estado", "Cidade" };
		boolean [] edicao = {false, true};

		// Alimenta as linhas de dados
		dados.add(new String[] { "SP", "São Paulo" });
		dados.add(new String[] { "RJ", "Rio de Janeiro" });
		dados.add(new String[] { "RN", "Rio Grande do Norte" });
		dados.add(new String[] { "ES", "Espirito Santo" });

		SimpleTableModel modelo = new SimpleTableModel(dados, colunas, edicao);
		JTable jtable = new JTable(modelo);
		jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		// Adiciona uma linha pelo modelo
		modelo.addRow(new String[]{"SC","Santa Catarina"});
		
		// Remove pelo indice
		modelo.removeRow(0); // Sao Paulo
		
		// Remove pelo valor
		modelo.removeRow("RN", 0);

		return jtable;

	}
	
}

SimpleTableModel.java

import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.table.AbstractTableModel;

/*
 * Created on 25/05/2004
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */

/**
 * <br>Créditos  : Bruno R. Lima
 * <br>Construção: 25/05/2004
 * <p>
 * Classe que extende a AbstractTableModel.
 * Faz uma implementação do modelo de tabela para uma JTable
 * </p>
 * @author Bruno R. Lima
 */
public class SimpleTableModel extends AbstractTableModel{

	private ArrayList linhas = null;
	private String [] colunas = null;
	private boolean [] colsEdicao;
	
	/**
	 * Contrutor para a classe, recebendo os dados a serem exibidos
	 * e as colunas que devem ser criadas.
	 * @param dados
	 * @param colunas
	 */
	public SimpleTableModel(ArrayList dados, String[] colunas, boolean [] edicao){
		setLinhas(dados);
		setColunas(colunas);
		colsEdicao = edicao;
	}

	/**
	 * Retorna o numero de colunas no modelo
	 * @see javax.swing.table.TableModel#getColumnCount()
	 */
	public int getColumnCount() {return getColunas().length;}

	/**
	 * Retorna o numero de linhas existentes no modelo
	 * @see javax.swing.table.TableModel#getRowCount()
	 */
	public int getRowCount() {return getLinhas().size();}

	/**
	 * Obtem o valor na linha e coluna
	 * @see javax.swing.table.TableModel#getValueAt(int, int)
	 */
	public Object getValueAt(int rowIndex, int columnIndex) {
		// Obtem a linha, que é uma String []
		String [] linha = (String [])getLinhas().get(rowIndex);
		// Retorna o objeto que esta na coluna
		return linha[columnIndex];
	}

	public String[] getColunas() {return colunas;}
	public ArrayList getLinhas() {return linhas;}
	public void setColunas(String[] strings) {colunas = strings;}
	public void setLinhas(ArrayList list) {linhas = list;}
	
	/**
	 * Seta o valor na linha e coluna
	 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
	 */
	public void setValueAt(Object value, int row, int col){
		// Obtem a linha, que é uma String []
		String [] linha = (String [])getLinhas().get(row);
		// Altera o conteudo no indice da coluna passado
		linha[col] = (String)value;
		// dispara o evento de celula alterada
		fireTableCellUpdated(row,col);
	}
	/**
	 * Retorna se a celula pode ser editada
	 * @see javax.swing.table.TableModel#isCellEditable(int, int)
	 */
	public boolean isCellEditable(int row, int col){
		return colsEdicao[col];
	}
	
	/**
	 * Adiciona o array na linha
	 */
	public void addRow( String [] dadosLinha){
		getLinhas().add(dadosLinha);
		// Informa a jtable de que houve linhas incluidas no modelo
		// COmo adicionamos no final, pegamos o tamanho total do modelo
		// menos 1 para obter a linha incluida.
		int linha = getLinhas().size()-1;
		fireTableRowsInserted(linha,linha);
		return;
	}
	
	/**
	 * Remove a linha pelo indice informado
	 * @param row
	 */
	public void removeRow(int row){
		getLinhas().remove(0);
		// informa a jtable que houve dados deletados passando a 
		// linha reovida
		fireTableRowsDeleted(row,row);
	}
	
	/**
	 * Remove a linha pelo valor da coluna informada
	 * @param val
	 * @param col
	 * @return
	 */
	public boolean removeRow(String val, int col){
		// obtem o iterator
		Iterator i = getLinhas().iterator();
		int linha = 0;
		// Faz um looping em cima das linhas
		while(i.hasNext()){
			// Obtem as colunas da linha atual
			String[] linhaCorrente = (String[])i.next();
			linha++;
			// compara o conteudo String da linha atual na coluna desejada
			// com o valor informado
			if( linhaCorrente[col].equals(val) ){
				getLinhas().remove(linha);
				// informa a jtable que houve dados deletados passando a 
				// linha removida
				fireTableRowsDeleted(linha,linha);
				return true;				
			}
		}
		// Nao encontrou nada
		return false;
	}
	
	/**
	 * Retorna o nome da coluna.
	 * @see javax.swing.table.TableModel#getColumnName(int)
	 */
	public String getColumnName(int col){
		return getColunas()[col];
	}

}

vc pode me ajudar?

Criado 25 de abril de 2006
Ultima resposta 26 de abr. de 2006
Respostas 6
Participantes 3