Olá, estou no primeiro ano do curso de Sistemas de Informação. Estou com dificuldade no seguinte problema:
Os alunos devem construir um programa em Java, para gerar a Tabela de Fórmula 1 ?
temporada 2008; O programa deve ler de um arquivo texto com extensão .dat o resultado de cada
prova: PILOTO, EQUIPE e TEMPO. O programa deve calcular e imprimir a Tabela de Classificação utilizando as classes:
JTable, DefaultTableModel e Vector.
O arquivo .dat está formatado do modo que o professor especificou. O problema está em imprimir estes dados no JTable.
Aqui está o meu código, que mescla a leitura de dados de um arquivo .DAT e uma interface JTable:
[code]/**
*
*/
package F;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.*;
/**
-
@author André Davi Fontana Rodrigues.
-
@size AGO 23, 2008.
-
@version 1.0
*/
public class Formula1 extends JFrame {private JTable tabela = new JTable();
private JScrollPane coluna = new JScrollPane();
private DefaultTableModel modelo = new DefaultTableModel();
public Formula1(){
//Determinar as propriedades e o layout. super("Tabela Formula1"); getContentPane(); setLayout ( new BorderLayout() ); loadData(); coluna.setViewportView(tabela); getContentPane().add(coluna, BorderLayout.CENTER);}
/**
-
Load the test data.
*/
private void loadData() {Vector tab = new Vector();
Vector colunaNomes = new Vector();
colunaNomes.add(“Mundial de Pilotos”);
colunaNomes.add(“Austrália”);
colunaNomes.add(“Malásia”);
colunaNomes.add(“Bahrein”);
colunaNomes.add(“Espanha”);
colunaNomes.add(“Turquía”);
colunaNomes.add(“Mônaco”);
colunaNomes.add(“Canadá”);
colunaNomes.add(“França”);
colunaNomes.add(“Inglaterra”);
colunaNomes.add(“Alemanha”);
colunaNomes.add(“Hungria”);
colunaNomes.add(“Espanha”);
colunaNomes.add(“Bélgica”);
colunaNomes.add(“Itália”);
colunaNomes.add(“Cingapura”);
colunaNomes.add(“Japão”);
colunaNomes.add(“China”);
colunaNomes.add(“Brasil”);
colunaNomes.add(“Total de pontos”);Vector row = null;
row = new Vector();
row.add(“Lewis Hamilton”);
row.add(“10”);
row.add(“62”);
tab.add(row);modelo.setDataVector(tab, colunaNomes);
tabela.setModel(modelo);setSize(1200, 320);
setLocation(50, 180);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) throws IOException {
// Declaração de dados Formula1 janela = new Formula1(); File arquivo = new File("TabelaClassificacao.dat"); System.out.println(arquivo.getAbsolutePath()); Scanner entrada = new Scanner(arquivo.getAbsoluteFile()); String linhaEntrada; String nomeEequipe; String equipe; int dia; int mes; int ano; int a; int posicao = -1; char caractere; String aux; String[] valores; String saida; // Entrada de dados while (entrada.hasNext()) { linhaEntrada = entrada.nextLine(); for (a = 0; a < linhaEntrada.length(); a++) { caractere = linhaEntrada.charAt(a); if (Character.isDigit(caractere)) { posicao = a; break; } } nomeEequipe = linhaEntrada.substring(0, posicao - 1); aux = linhaEntrada.substring(posicao, linhaEntrada.length()); valores = aux.split(" "); dia = Integer.parseInt(valores[0]); mes = Integer.parseInt(valores[1]); ano = Integer.parseInt(valores[2]); saida = nomeEequipe; saida += "\t " + dia + "\t " + mes + "\t " + ano; System.out.println(saida); }}
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub}
} -
O algoritmo para a somar os pontos de cada piloto em cada corrida estou criando agora, se alguém tiver alguma sugestão para este algoritmo ou para imprimir estes dados no JTable eu agradeço desde já. Falou.