1. PRESENTACION<br />En el Paquete Presentación se ha creado cuatro frames, de los cuales tres depende de un principal llamado frmPrincipal el cual llama a los demás instanciándolos como se observa aquí:<br />frmPrincipal:<br />Pare esto se ha creado un contenedor en el frmPrincipal en donde podremos tener a los demás frames para esto se ha creado:<br />public class frmPrincipal extends javax.swing.JFrame {<br /> public frmPrincipal() {<br /> initComponents();<br /> setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);<br />}<br />En la parte superior de este frame se han creado 4 items de menú <br />Los otros frames se llaman así:<br />frmCursos ofrmCursos = new frmCursos();<br /> pnlPrincipal.add(ofrmCursos);<br /> ofrmCursos.setVisible(true);<br />A continuación se explicara el frame curso el cual el principal para registrar a cada curso. <br />Para esto se ha creado al igual que en FrmAlumnos y frmNotas su respectivo modelo <br />En estemodelo en realidad es una clase hija de AbstractTableModel {} que esta en implementada en java,esta clase es modificada para luego ser utilizada en presentacion en su respectiva tabla:<br />Los metodos que han sidomodificados son los siguientes:<br />getRowCount() {} devuelve el numero de filas<br />getColumnCount() {}devuelve el numero de columnas <br />getColumnName(int columnIndex) {} devuelve el numero de columnas<br />getValueAt(int rowIndex, int columnIndex) {}toma los valores que se encuentran en la tabla<br />isCellEditable(int rowIndex, int columnIndex) {}devuelve si puede ser o no editable<br />setValueAt(Object aValue, int rowIndex, int columnIndex) {}devuelve los valores de cada celda <br />if(aValue!= null) {<br />if(aValue.toString().isEmpty()) {<br /> datos.get(rowIndex).getNotas().get(columnIndex - 2).setValor(-1.0);<br /> }<br /> else {<br /> if(esnumero(aValue.toString())==true){<br /> datos.get(rowIndex).getNotas().get(columnIndex - 2).setValor (Double.parseDouble (aValue. toString( )));<br /> }<br /> Calculadora calculadora = new Calculadora();<br /> Double promedio = calculadora.Calcular(datos.get(rowIndex).getOCurso().getFormula(), datos.get(rowIndex).getNotas());<br /> datos.get(rowIndex).setPromedio(promedio);<br /> }<br /> fireTableCellUpdated(rowIndex, columnIndex);<br /> fireTableCellUpdated(rowIndex, datos.get(rowIndex).getNotas().size() + 2);<br /> }<br />Como podemos observar este es el metodo mas importante puesto q en el se ejecutara el promedio lamando a los metodos que se encuentran en la logica Negocios:”calculadora” y posteriormente promedio.<br />Como vemos primero se evalua si se encuentran llenas las cedas de de la tabla y luego pasamos estos valores a la clase calculadora donde se devolvera el resultado promedio de la formula ya extraida.<br />Auxiliarmente hemos creido convenientemente crear <br /> public boolean esnumero(String numero){<br /> numero= numero.toUpperCase();<br /> int con=0;<br /> for (int i = 0; i < numero.length(); i++) {<br /> if(numero.substring(i, i+1).equals(quot;
.quot;
)//||numero(numero.substring(i, i+1))==false<br /> ){<br /> con=con+1;<br /> }<br /> }<br /> if(con>1){<br /> return false;<br /> }else{<br /> return true;<br /> }<br /> }<br />Este metodo es utilizado con elfin dequeen la tabla solo seingrese dato s doubles y no alla algun error como elde ingresar dobles puntos.<br />Parapoder entendermejor el proyectopsare a explicar el uso del frame notas:<br />public frmNotas() {<br /> initComponents();<br /> this.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width / 2 - this.getWidth() / 2,Toolkit.getDefaultToolkit().getScreenSize().height / 2 - this.getHeight() / 2 );<br /> PresentarCursos();<br /> }<br /> private void PresentarCursos() {<br /> GestionNotas gestionNotas = new GestionNotas();<br /> try {<br /> cboCurso.setModel(new DefaultComboBoxModel(gestionNotas.ConsultarCursos(quot;
quot;
, quot;
quot;
).toArray()));<br /> }<br /> catch(Exception e) {<br /> System.out.println(quot;
ERRORquot;
);<br /> }<br /> }<br />En este metodo al tenerelcombo de alumnos se ha creado un combo por default seconsultan todos los cursos los cuales son agregadosen un array y a su vez sonpresentado en elframe medianteel combo con el metodo PresentarCursos() {}<br />Luego se llama al siguiente metodo;<br /> private void PresentarAlumnos() {<br /> GestionNotas gestionNotas = new GestionNotas();<br /> try {<br /> Curso curso = ((Curso)(cboCurso.getSelectedItem()));<br /> List<String> columnas = new ArrayList<String>();<br /> columnas.add(quot;
Codigoquot;
);<br /> columnas.add(quot;
Nombrequot;
);<br /> <br /> for(int i=0;i<curso.getTiposEvaluaciones().size();i++) {<br /> columnas.add(curso.getTiposEvaluaciones().get(i));<br /> }<br /> columnas.add(quot;
Promedioquot;
);<br /> tblNotas.setModel(new ModeloNotas(columnas , gestionNotas.ConsultarAlumnos(quot;
quot;
, quot;
quot;
,(Curso)(cboCurso.getSelectedItem()))));<br /> //tblNotas.setModel(new ModeloNotas(columnas,gestionNotas.ConsultarAlumnos(quot;
quot;
, quot;
quot;
,curso))));<br /> tblNotas.setDefaultRenderer(Object.class, new MiRender());<br /> <br /> }<br /> catch(Exception e) {<br /> System.out.println(quot;
ERROR1111quot;
);<br /> }<br /> }<br />Este metodo llama al modelo de alumnos y en este es presentado, a la vez se ha usado una clase por defauld de tabla:<br />public class MiRender extends DefaultTableCellRenderer {<br /> @Override<br />public Component getTableCellRendererComponent(JTable table,<br />Object value, boolean isSelected, boolean hasFocus, int row,<br />int column) {<br /> if(column>1){<br />Component cell = super.getTableCellRendererComponent(table, value,<br />isSelected, hasFocus, row, column);<br />//cell.setBackground(Color.BLUE);<br />if(value!=null){<br /> if(value.toString().compareTo(quot;
0quot;
)>=0 && value.toString().compareTo(quot;
10.5quot;
)<0<br /> )<br /> //Double.parseDouble(value.toString())>0&&Double.parseDouble(value.toString())<10.5)<br /> cell.setForeground(Color.red);<br /> else<br /> cell.setForeground(Color.blue);<br /> }<br /> return cell;<br /> }else{<br /> Component cell = super.getTableCellRendererComponent(table, value,<br />isSelected, hasFocus, row, column);<br />//cell.setBackground(Color.GREEN);<br />cell.setForeground(Color.BLACK);<br /> <br /> return cell;<br /> }<br />}<br /> }<br />En esta se le asigna colores a las notas si son 10 a 10.5 o 0 a 1 las muestra de color rojo.<br /> <br />