Java – Matrizes e Tabelas

javaO exercício com tabelas de alunos, notas e médias também pode ser feito em Java com interface gráfica do usuário.  No Bloco de Notas do Windows, escrevemos o arquivo fonte tabela.java, que foi compilado em linha de comando com javac tabela.java, produzindo o arquivo executável tabela.class.  Para executá-lo em linha de comando, basta digitar java tabela.  Veja a seguir a listagem e uma saída de tela.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class tabela{
JFrame f;
JTable tabTabela;
JScrollPane spPainel;
JButton btnTabela;
int alunos, notas, i, j;
String[] nome;
float[][] nota;
float[] media;
float somaNota, somaMedia, mediaClasse;
String[] columnNames;
String[][] rowData;
public tabela(){
initComponents();
defineActions();
}
private void initComponents(){
f = new JFrame();
f.setTitle("Alunos e Médias");
f.setSize(500,500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new FlowLayout());
btnTabela = new JButton("Inserir");
f.add(btnTabela);
f.setVisible(true); 
}
private void defineActions(){
btnTabela.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
alunos = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe o número de alunos:"));
nome = new String[alunos];
media = new float[alunos];
notas = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe o número de notas:"));
nota = new float[alunos][notas];
for(i=0;i<alunos;i++){
somaNota = 0;
nome[i] = JOptionPane.showInputDialog(null, "Informe o nome do aluno:");
for(j=0;j<alunos;j++){
nota[i][j] = Float.parseFloat(JOptionPane.showInputDialog(null, "Informe a nota:"));
somaNota = somaNota + nota[i][j];}
media[i] = somaNota / notas;
somaMedia = somaMedia + media[i]; 
}
mediaClasse = somaMedia / alunos; 
rowData = new String[alunos][alunos+2];
for(i=0;i < alunos;i++){
rowData[i][0] = nome[i];
for(j=0;j < alunos;j++){
rowData[i][j+1] = Float.toString(nota[i][j]);
}
rowData[i][j+1]= Float.toString(media[i]);
}
columnNames = new String[alunos+2];
columnNames[0]= "Nome";
for(i=1;i <= alunos;i++){
columnNames[i] = "Aluno " + i;
}
columnNames[i]= "Media";
tabTabela = new JTable(rowData, columnNames);
spPainel = new JScrollPane(tabTabela);
f.add(spPainel);
f.setVisible(true); 
}
});
}
public static void main(String args[]){
new tabela();
}
}

A listagem acima é melhor visualizada com o Sublime Text 3.

tabelas_javatabelas

A novidade, neste caso, foi a utilização do componente visual JTable, do pacote Swing. A forma que encontrei para utilizá-lo está entre as linhas 48 e 65 – ver listagem acima.  Tenho a impressão de que é possível melhorar o código.  Agradeço por eventuais comentários e sugestões.