O 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.
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.