Entrada y Salida en JAVA por Consola.
domingo, 23 de agosto de 2009
En la historia de Java, han existido diversas formas de realizar la entrada y salida por Consola. En esta oportunidad veremos las últimas 3, y nos quedaremos con la que se usa en Java 5, que corresponde a Scanner. Realizaremos el mismo ejemplo que consiste en obtener el perímetro y área de un Círculo.
1. Java 1.4
Para Java 1.4 se utilizaba una mezcla entre BufferedReader e InputStreamReader.
Ejemplo:
package geometria;
import java.io.*;
public class Circulo {
public static void main(String[] args) throws java.io.IOException {
BufferedReader entrada = new BufferedReader(
new InputStreamReader(System.in));
double r, area, perimetro;
System.out.print("Ingrese radio: ");
r = Double.valueOf(entrada.readLine()).doubleValue();
area = Math.PI*Math.pow(r, 2.0);
perimetro = 2.0 * Math.PI * r;
System.out.println("Area =" + area);
System.out.println("Perimetro=" + perimetro);
}
}
2. Java 5
Se usa la Clase Scanner disponible en java.util.
package geometria;
import java.util.*;
public class Circulo {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in));
double r, area, perimetro;
System.out.print("Ingrese radio: ");
r = entrada.nextDouble();
area = Math.PI*Math.pow(r, 2.0);
perimetro = 2.0 * Math.PI * r;
System.out.println("Area =" + area);
System.out.println("Perimetro=" + perimetro);
}
}
3. Java 6.
Se pueden usar las formas anteriores, pero apareció la clase Console.
package geometria;
import java.io*;
public class Circulo {
public static void main(String[] args) {
Console consola = System.console();
double r, area, perimetro;
r = Double.valueOf(consola.readLine("Ingrese radio: "));
area = Math.PI*Math.pow(r, 2.0);
perimetro = 2.0 * Math.PI * r;
consola.printf("Area =%f", area);
consola.printf("Perimetro =%f", perimetro);
}
}
Personalmente me quedo con la clase Scanner, ya que no hay que estar realizando conversiones. Además es más fácil realizar validaciones sobre la entrada.
Publicado porfwsp en 5:17 0 comentarios
Hola Mundo en NetBeans con SWING
sábado, 15 de agosto de 2009
En esta oportunidad crearemos una pequeña aplicación que utilice la GUI de SWING.
Manos a la obra...
Lo primero, creamos una Nueva Java Application, y le damos el nombre appEjemploSWING, luego en los "Source Packages" agregamos un nuevo package llamado ejemplo. Finalmente agregamos una JFrame Form al package recién creado, y lo llamados frmEjemplo.
Al realizar esto agregamos una JFrame que corresponde a un formulario de nivel superior en SWING.
Después de realizado lo anterior se debería ver como sigue.
En la ventana anterior se puede apreciar el Diseñador Matisse, que trae incoporado NetBeans, además de la Paleta de Controles y la Ventana de Propiedades.
En la ventana de propiedades, cambiamos las propiedades title (título del JFrame), por "Ejemplo con SWING" (sin comillas), y también podemos desmarcar la propiedad Resizable, para que no podamos modificar el tamaño del JFrame en tiempo de ejecución.
Luego, arrastramos desde la Paleta de Controles SWING los siguientes controles: 1 Label (jLabel), 1 TextField (jTextField), y un Button (jButton). Como es un ejemplo básico no entraré en muchos detalles, ni tampoco estableceré sus respectivas propiedades Name.
Lo siguiente sería cambiar las propiedades text de cada uno de ellos para que el formulario quede de la siguiente forma:
El siguiente paso será escribir cierto código que nos permita 2 cosas: mejorar la apariencia del JFrame, y realizar el saludo cuando presionemos el Button.
Entonces...
... nos vamos a la ventana de código, presionándo el ToggleButton "Source", que se encuentra al lado izquierdo de Design.
Bajo package ejemplo, incorporamos:
import javax.swing.*;
y bajo la declaracion: public void run() {, incorporamos:
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);

Volvemos a la vista de Diseño (Design), y hacemos doble click sobre el Button, se vuelve a abrir la vista de código, y en lugar en que aparece el cursor, escribimos:
JOptionPane.showMessageDialog(this, "Hola " + jTextField1.getText(),
"saludos",JOptionPane.INFORMATION_MESSAGE);
Lo probamos, y el programa corriendo queda...
El código del programa, incluyendo el código generado por NetBeans es el siguiente.
/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/
/*
* frmEjemplo.java
*
* Created on 15-08-2009, 11:49:12 AM
*/
package ejemplo;
import javax.swing.*;
/**
*
* @author Fabián Silva
*/
public class frmEjemplo extends javax.swing.JFrame {
/** Creates new form frmEjemplo */
public frmEjemplo() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Ejemplo con SWING");
setResizable(false);
jLabel1.setText("Ingrese su nombre:");
jButton1.setText("Saludar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 257,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1))
.addComponent(jLabel1))
.addContainerGap(30, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(42, 42, 42)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addContainerGap(81, Short.MAX_VALUE))
);
pack();
}//
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(this, "Hola " + jTextField1.getText(),
"saludos",JOptionPane.INFORMATION_MESSAGE);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
new frmEjemplo().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
Se sugiere no modificar el método InitComponents, ya que éste es generado automáticamente por el diseñador.
Publicado porfwsp en 8:42 1 comentarios
Etiquetas: JFrame, Matisse, NetBeans, SWING
Hola Curicó en Java
lunes, 3 de agosto de 2009
Ya que tenemos instalado NetBeans y Java, vamos a probarlo creando el programa mínimo, que consiste en enviar un saludo por la consola.
Para crear un proyecto nuevo, ingresamos al Menú File ==> New Project, y nos aparecerá el siguiente Formulario.
Seleccionamos Java Application, y presionamos Next >, nos aparecerá el siguiente formulario.
Es una buena práctica, cambiar el nombre de la aplicación con alguno significativo. Luego desactivamos la creación de una Clase Main. No es necesario, en realidad nunca lo es.
Podemos establecer además la ubicación, para mi está bien, en "Mis Documentos".
Bien, en la pantalla que nos aparece ahora agregaremos una Main Class, que no es más que una clase que tiene el método main.
Tal como se muestra en la figura, expandimos el arbol del proyecto en "Source Packages"(no es muy aconsejable, pero para ser nuestro primer programa... más adelante aprenderemos a crear packages), y agregamos una Java Main Class. Si no aparece como en la figura, seleccionamos Other.
Aparecerá el siguiente formulario...
Luego Siguiente, y le damos un nombre a nuestra clase, ej: Saludos.
Ya podemos escribir nuestro código, y lo insertamos dentro del método main.
System.out.println("HOLA Curicó");
Para ejecutarlo, presionamos F6, o Menú Run ==> Run Main Project. La salida aparecerá m{ás abajo.
Bien, eso sería nuestro Saludos Curicó...
Publicado porfwsp en 4:30 1 comentarios
Java, ¿dónde obtengo la versión que necesito?
Para adentrarnos en el mundo Java, primero hay que descargarlo. En este enlace, se puede obtener Java Standard Edition (JSE) en conjunto con NetBeans. De todas formas es posible descargarlo por separado, y seleccionar aquellas características que nos interesen.
Publicado porfwsp en 4:19 0 comentarios
The Beginning
Me motiva crear este blog para apoyar el aprendizaje del lenguaje Java. Espero aportar desde temas básicos hasta avanzados, incluyendo NetBeans, Orientación a Objetos, SWING, JSP, Servlets, Struts, JME... lo que vaya saliendo...
Publicado porfwsp en 4:15 0 comentarios
