[Java] Contador de Lineas

Iniciado por LKI, Octubre 16, 2014, 05:44:44 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 16, 2014, 05:44:44 PM Ultima modificación: Octubre 16, 2014, 08:14:25 PM por Expermicid
Hola gente les traigo un programita que estuve haciendo es muy simple pero espero que les pueda servir a aquellos programadores que les gusta saber la cantidad de lineas que tiene sus programas :P


  • Estructura del programa:
       

  • Creamos la Ventana (nombre: Aplicacion)
Código: java
package aplicacion;

import java.awt.BorderLayout;

public class Aplicacion extends JFrame {

/*
* Creamos nuestra GUI donde veremos todos los elementos visuales
*
*/
private JMenuBar barra;
private JMenu menu;
public JMenuItem menuItem;
private JScrollPane scrollPane;
private JPanel panelCentral;
public JTextArea area;
private int lineas;
public JLabel labelContador;
private JPanel panelInferior;
private String texto;
private JMenu menuFormato;
private JMenu menuFuente;
private JMenu menuTamanio;
private JMenu menuColor;
public JMenuItem paletaDeColores;
public JMenuItem tamanio2;
public JMenuItem tamanio1;
public JMenuItem fuente1;
public JMenuItem fuente2;
public JMenuItem fuente3;


public Aplicacion() {

/*
* En el constructos inicializamos los paneles y la configuracion de la ventana
*/
iniciarPanelInferior();
iniciarPanelCentral();
iniciarMenu();
iniciarGUI();
}

private void iniciarPanelInferior() {

/*
* Creamos nuestro PanelInferior y lo añadimos a la parte SUR de la Ventana
*/
panelInferior = new JPanel();
labelContador = new JLabel(" ");
labelContador.setFont(new Font("Arial Unicode MS", Font.BOLD, 18));
panelInferior.add(labelContador);
getContentPane().add(panelInferior, BorderLayout.SOUTH);

}

private void iniciarMenu() {

/*
* Iniciamos nuestro menu que luego llevara a cabo los eventos del usuario
*/
barra = new JMenuBar();
menu = new JMenu("Opciones");
menuFormato = new JMenu("Formato");

menuItem = new JMenuItem("Abrir Archivo");

menu.add(menuItem);
menu.add(menuFormato);

menuColor = new JMenu("Color");
menuFormato.add(menuColor);

paletaDeColores = new JMenuItem("Abrir Paleta de colores");
menuColor.add(paletaDeColores);

menuTamanio = new JMenu("Tama\u00F1o");
menuFormato.add(menuTamanio);

tamanio1 = new JMenuItem("18");
menuTamanio.add(tamanio1);

tamanio2 = new JMenuItem("20");
menuTamanio.add(tamanio2);

menuFuente = new JMenu("Fuente");
menuFormato.add(menuFuente);

fuente3 = new JMenuItem("MonoSpaced");
menuFuente.add(fuente3);

fuente2 = new JMenuItem("Times New Roman");
menuFuente.add(fuente2);

fuente1 = new JMenuItem("Arial");

menuFuente.add(fuente1);
barra.add(menu);
setJMenuBar(barra); //Agregamos la barra con los menues a la ventana

}

private void iniciarPanelCentral() {
/*
* Iniciamos el panelCentral de la aplicacion donde tendremos el texto a contar
*/
area = new JTextArea();
area.setFont(new Font("Monospaced", Font.PLAIN, 15));
scrollPane = new JScrollPane(area);
scrollPane.setViewportView(area);

scrollPane
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
getContentPane().add(scrollPane, BorderLayout.CENTER);

}

private void iniciarGUI() {
/*
* Configuramos las caracteristicas de la ventana (tamaño,titulo,visibilidad,eje de vista)
*/
setSize(595, 426);
setTitle("Contador de Lineas");
setLocationRelativeTo(null);
setVisible(true);

}

}



  • Creamos el Controlador (nombre: Controlador)
Código: java


package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import modelo.Modelo;
import aplicacion.Aplicacion;

public class Controlador implements ActionListener {
/*
* Creamos Nuestro controlador que comunicara todos los eventos con el modelo
*/
private int tam = 16;
private Modelo modelo;
private Aplicacion aplicacion;

public Controlador(Aplicacion _ap, Modelo _modelo) {

//Recibimos y seteamos el modelo y la aplicacion
this.modelo = _modelo;
this.aplicacion = _ap;
agregarEventos();
}

private void agregarEventos() {

/*
* Agregamos los eventos de la ventana y le inidicamos que este objeto sera su manejador
*/
this.aplicacion.menuItem.addActionListener(this);
this.aplicacion.menuItem.setActionCommand("abrirArchivo");
this.aplicacion.paletaDeColores.addActionListener(this);
this.aplicacion.paletaDeColores.setActionCommand("paletaDeColores");
this.aplicacion.tamanio1.addActionListener(this);
this.aplicacion.tamanio1.setActionCommand("tam1");
this.aplicacion.tamanio2.addActionListener(this);
this.aplicacion.tamanio2.setActionCommand("tam2");
this.aplicacion.fuente1.addActionListener(this);
this.aplicacion.fuente1.setActionCommand("fuente1");
this.aplicacion.fuente2.addActionListener(this);
this.aplicacion.fuente2.setActionCommand("fuente2");
this.aplicacion.fuente3.addActionListener(this);
this.aplicacion.fuente3.setActionCommand("fuente3");

}

@Override
public void actionPerformed(ActionEvent evento) {

/*
* Segun el evento ejecutamos la accion pertinente
*/
switch (evento.getActionCommand()) {

case "abrirArchivo":
this.modelo.abrirArchivo();
this.aplicacion.area.setText(this.modelo.texto);
this.aplicacion.labelContador.setText("Total de lineas ="+ this.modelo.getLineas());
break;

case "paletaDeColores":

this.aplicacion.area.setForeground(this.modelo.cambiarColor());
break;

case "tam1":

this.aplicacion.area.setFont(this.modelo.nuevaFuente(
this.aplicacion.area.getFont().toString(), 18));

tam = 18;
break;

case "tam2":

this.aplicacion.area.setFont(this.modelo.nuevaFuente(
this.aplicacion.area.getFont().toString(), 20));

tam = 20;
break;

case "fuente1":
this.aplicacion.area.setFont(this.modelo.nuevaFuente("Arial",tam));

break;

case "fuente2":
this.aplicacion.area.setFont(this.modelo.nuevaFuente("Times New Roman", tam));

break;
case "fuente3":

this.aplicacion.area.setFont(this.modelo.nuevaFuente("Monospaced", tam));
break;
}

}

}




  • Creamos el modelo (nombre: Modelo)
Código: java


package modelo;

import java.awt.Color;
import java.awt.Font;
import java.io.*;

import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

public class Modelo {

public String texto;
private int lineas;
private Color color;
private Font nuevaFuente;
private Font fuente;

public Modelo() {

}

public Color cambiarColor(){ //Metodo que retorna un color seleccionado a partir de un componente modal ColorChooser
JColorChooser ventanaDeColores = new JColorChooser();
color = ventanaDeColores.showDialog(null,"Seleccione un Color", Color.gray);
    return color;

}

public String abrirArchivo() {
               setLineas(0);
String aux = "";
texto = "";
try {
/** llamamos el metodo que permite cargar la ventana */
JFileChooser file = new JFileChooser(); //creamos nuestro buscador de archivos

file.showOpenDialog(null);
/** abrimos el archivo seleccionado */
File abre = file.getSelectedFile(); // creamos un archivo que contendra el archivo seleccionado en el buscador

/**
* recorremos el archivo, lo leemos para plasmarlo en el area de
* texto y para  obtener el numero de lineas de codigo
*/
if (abre != null) {
FileReader archivos = new FileReader(abre);
BufferedReader lee = new BufferedReader(archivos);
while ((aux = lee.readLine()) != null) {
texto += aux + "\n";
lineas++;
setLineas(lineas);
}
lee.close();
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex + ""
+ "\nNo se ha encontrado el archivo", "ADVERTENCIA!!!",
JOptionPane.WARNING_MESSAGE);
}
return texto;// El texto se almacena en el JTextArea
}





/*
* Setter y getters
*/

public int getLineas() {
return lineas;
}

public void setLineas(int lineas) {
this.lineas = lineas;
}

/*
* Metodo para cambiar la fuente de la aplicacion
*
*/
public Font nuevaFuente(String font, int tamanio) {

nuevaFuente = new Font(font, Font.PLAIN, tamanio);
return nuevaFuente;
}
}




  • Y finalmente creamos nuestro ejecutable (nombre: Main)
Código: java

package ejecutable;

import controlador.Controlador;
import modelo.Modelo;
import aplicacion.Aplicacion;

public class Main {

public static void main(String[] args) {

Aplicacion aplicacion = new Aplicacion();
Modelo modelo = new Modelo();

/*
* Creamos y le pasamos como parametros al controlador la ventana y el modelo
*/
new Controlador(aplicacion, modelo);

}

}



Funcionando..
                                   
Ser mejor cada día es mi meta

=LKI=

Buenisimo LKI.
Es una muy buena practicar el patrón mvc.

Saludos

Para los que estamos estudiando Java bastante interesante, codigo facilito, entendible y bien comentado.

Gracias.
Un Saludo.
Nunca consideres el estudio como una obligación, sino como una oportunidad para adentrarse en el maravilloso mundo del saber.