Java Swing
Java Swing
INGENIA-CAFI
import java.awt.Frame;
public class Primerframe {
public static void main(String[] args) {
Frame f = new Frame("Primer Frame");
f.resize(300,250);
f.move(60,50);
f.show();
}
}
// EJEMPLO 2
// Crear una clase que se extienda de la clase Frame y que dibuje una cuadricula en la
//ventana o frame.
// Archivo: Cuadricula.java
import java.awt.*;
public class Cuadricula extends Frame {
public Cuadricula(String nombre) { super(nombre); }
public Cuadricula() { super(); }
public void paint(Graphics g) {
/* objeto Dimension tiene solo dos miembros width y height(ancho y alto) */
Dimension d = size();
int gridx = d.width/3;
int gridy = d.height/3;
for(int x=1;x<3;x++){
for(int y=1;y<3;y++){
Analista Programador
INGENIA-CAFI
g.drawLine(gridx*x,0,gridx*x,d.height);
g.drawLine(0,gridy*y,d.width,gridy*y);
}
}
}
}
// Crear una clase que utilice la clase extendida para crear una ventana
// Archivo: uso_Cuadricula.java
import java.awt.*;
public class uso_Cuadricula {
public static void main(String[] args) {
Frame f = new Cuadricula("Prueba");
f.resize(350,250);
f.move(60, 75);
f.show();
}
}
// EJEMPLO 3
//Crear una clase que contenga un Frame con dos botones (Aceptar y Cancelar)..
// Archivo: Botones0.java
import java.awt.*;
public class Botones0 {
Analista Programador
INGENIA-CAFI
ventana.add(bt_cancelar);
// shape es la forma de los botones x e y en la esquina del frame
bt_aceptar.reshape(10, 30, 75, 45);
bt_cancelar.reshape(10, 85, 75, 45);
ventana.reshape(60, 75, 250, 200);
ventana.show();
}
}
// EJEMPLO 4
//Crear una clase que contenga un Frame y que maneje un evento para cerrar la ventana al
//hacer click en [x]
// Archivo: CerrandoVentana.java
import java.awt.*;
public class CerrandoVentana {
public static void main(String[] args) {
Frame f = new Frame("Ejercicio de Evento") {
public boolean handleEvent(Event evt) {
if (evt.id == Event.WINDOW_DESTROY)
System.exit(0);
return true;
}
};
f.show();
}
}
// EJEMPLO 5
//Crear una clase extendida de Canvas que personalice los eventos de un Button.
//Crear una clase extendida de Frame que contenga tres botones personalizados
//(Objetos relacionados al botn propio).
// Archivo: BotonPropio.java
import java.awt.*;
public class BotonPropio extends Canvas {
private boolean cursorAdentro;
private boolean cursorPresionado;
Analista Programador
INGENIA-CAFI
//Crear una clase extendida de Frame que contenga tres botones personalizados
//(Objetos relacionados al botn propio).
// Archivo: uso_BotonPropio.java
import java.awt.*;
public class uso_BotonPropio extends Frame {
Analista Programador
INGENIA-CAFI
Analista Programador
INGENIA-CAFI
// EJEMPLO 6
//Crear una clase que contenga un Frame y que maneje , por medio de un Listener, un
//evento para cerrar la ventana al hacer click en [x]
// Archivo: ListenCerrando.java
import java.awt.*;
import java.awt.event.*;
public class ListenCerrando {
public static void main(String[] args) {
WindowListener wl = new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
public void windowOpened(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
};
Frame closingFrame = new Frame("Closing Frame Test");
closingFrame.addWindowListener(wl);
closingFrame.setBounds(60, 75, 250, 400);
closingFrame.setVisible(true);
}
}
// EJEMPLO 7
//Dibujar una Texto en la posicin 50,50.
//Java Basico Ingenia
// Archivo: Ventana1.java
import java.awt.*;
public class Ventana1 extends Frame {
public Ventana1(String nombre) {
super(nombre);
Analista Programador
INGENIA-CAFI
}
public Ventana1() {
super();
}
public void paint(Graphics g) {
Dimension d = size();
g.setColor(new Color(0,0,0));
g.drawString("Java Basico Ingenia", 50, 50);
Font f = g.getFont();
FontMetrics fm = g.getFontMetrics(f);
System.out.println("Altura total: "+fm.getHeight());
System.out.println("Espacio: "+fm.getLeading());
System.out.println("Alto: "+fm.getAscent());
System.out.println("Bajo: "+fm.getDescent());
}
}
// Archivo: DibujandoTexto.java
import java.awt.*;
public class DibujandoTexto {
public static void main(String[] arg) {
Ventana1 v1 = new Ventana1("Dibujando Texto");
v1.setSize(450, 200);
v1.setVisible(true);
}
}
// EJEMPLO 8
//Crear un Frame que dibuje dos textos con diferente formato:
//
Java Basico
//
Ingenia
// Archivo: Ventana2.java
import java.awt.*;
public class Ventana2 extends Frame {
public Ventana2(String nombre) {
super(nombre);
}
Analista Programador
INGENIA-CAFI
public Ventana2() {
super();
}
public void paint(Graphics g) {
Dimension d = size();
g.setColor(new Color(0,0,0));
g.drawString("Dibujando Fuentes", 50, 50);
g.setFont(new Font("Monospaced", Font.BOLD, 36));
g.drawString("Dibujando Fuentes", 100, 100);
}
}
// Archivo: DibujandoTexto.java
import java.awt.*;
public class DibujandoFuente {
public static void main(String[] arg) {
Ventana2 v2 = new Ventana2("Dibujando Fuente");
v2.setSize(600, 200);
v2.setVisible(true);
}
}
// EJEMPLO 9
//Dibujar una Imagen que tenga como contenido el texto Java Basico Ingenia con una lnea
//debajo (simulando un estilo subrayado).
// Archivo: Ventana3.java
import java.awt.*;
public class Ventana3 extends Frame {
public Ventana3(String nombre) {
super(nombre);
}
public Ventana3() {
super();
}
public void paint(Graphics g) {
Analista Programador
INGENIA-CAFI
Dimension d = getSize();
Image i = createImage(d.width,d.height);
Graphics gp = i.getGraphics();
gp.drawString("Java Basico - Ingenia", 50, 50);
gp.drawLine(50,55,170,55);
gp.dispose();
g.drawImage(i,0,0,null);
}
}
// Archivo: DibujandoMemoria.java
public class DibujandoMemoria {
public static void main(String[] args) {
Ventana3 v3 = new Ventana3("Dibujando Memoria");
v3.setSize(250, 200);
v3.setVisible(true);
}
}
// EJEMPLO 10
//Cargar una imagen del disco y dibujarla en la aplicacin.
// Archivo: Ventana4.java
import java.awt.*;
public class Ventana4 extends Frame {
Image img = Toolkit.getDefaultToolkit().getImage("D:\\ruta de la figura\\imagen.gif");
public Ventana4(String nombre) {
super(nombre);
}
public Ventana4() {
super();
}
public void repaint(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
g.drawImage(img,50,50,100,100,this);
}
}
Analista Programador
INGENIA-CAFI
// EJEMPLO 11
//Crear un applet que imprima un mensaje de texto Primer Applet.
// Archivo: PrimerApplet.java
import java.applet.*;
import java.awt.*;
public class PrimerApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Primer Applet",50,50);
}
}
// EJEMPLO 12
//Utiliza las capacidades aprendidas para crear un Reloj en un Applet.
// Archivo: Reloj.java
import java.awt.*;
import java.applet.*;
import java.util.Date;
public class Reloj extends Applet implements Runnable {
Thread animador;
String horactual="";
Date date;
boolean running = true;
public void init() {
animador = new Thread(this);
animador.start();
}
public void destroy() {
running = false;
animador = null;
}
public void run() {
while (running) {
date = new Date();
String hora = date.getHours() + ":" + date.getMinutes() + ":"
+ date.getSeconds();
10
Analista Programador
INGENIA-CAFI
horactual=hora;
try {
animador.sleep(1000);
} catch (Exception e) {
}
repaint();
}
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
Dimension d = getSize();
g.setColor(Color.WHITE);
g.fillRect(0,0,d.width,d.height);
g.setColor(Color.BLACK);
g.drawString(horactual,50,50);
}
}
// EJEMPLO 13
// Crear un Frame que contenga cinco (5) botones organizados usando FlowLayout().
// Archivo: PrimerLayout.java
import java.awt.*;
public class PrimerLayout {
public static void main(String[] args) {
Frame f = new Frame("Ejemplo de Layout");
f.setLayout(new FlowLayout());
f.add(new Button("Boton 1"));
f.add(new Button("Boton 2"));
f.add(new Button("Boton 3"));
f.add(new Button("Boton 4"));
f.add(new Button("Boton 5"));
f.resize(250, 200);
f.show();
}
}
11
Analista Programador
INGENIA-CAFI
// EJEMPLO 14
//Crear un JFrame con un tamao 300 x 100, con titulo y que procese su evento de cerrar
//ventana.
// Archivo: JVentana.java
import javax.swing.*;
import java.awt.event.*;
public class JVentana extends JFrame {
public static void main( String args[] ) {
// crea un objeto de tipo JVentana
JVentana ventana = new JVentana();
procesaEventos eventos = new procesaEventos();
// Le agrega un OYENTE
// un listener es un objeto necesario para procesar
// los eventos que ocurren en el objeto sobre el cual es llamado
ventana.addWindowListener( eventos );
// Le colocamos un ttulo
ventana.setTitle( "Mi primera Ventana" );
// Le ponemos un tamao
ventana.setSize( 300, 100 );
// mostramos la ventana
ventana.show();
}
}
// Esta clase permite el procesamiento de eventos de
// la ventana, solo respondemos al cierre de la misma
// los otros eventos no se sobrecargan y se procesan
// por defecto
class procesaEventos extends WindowAdapter {
// reacciona ante el intento de cierre de
// la aplicacion
public void windowClosing( WindowEvent e ) {
// termina la aplicacin
System.exit(0);
}
}
12
Analista Programador
INGENIA-CAFI
// EJEMPLO 15
//Hacer uso de los contenedores y componentes para crear una figura circular e interactuar
//con su color, tamao y posicin.
// Archivo: VentanaDibujo.java
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class VentanaDibujo extends JFrame {
//COMPONENTES DE LA VENTANA
private JButton btnLimpiar;
private JLabel lblCentro;
private JPanel panBotones;
private JLabel lblFigura;
private JComboBox cboFigura;
private JPanel panSuperior;
private JPanel panControles;
private JTextField txtRadio;
private JTextField txtCY;
private JTextField txtCX;
private JLabel lblRadio;
private JComboBox cboColor;
private JPanel panPrincipal;
private JLabel lblColor;
private JButton btnSalir;
private JButton btnDibujar;
private JPanel panDibujo;
//OBJETOS DE DIBUJO
private Ellipse2D.Double circulo;
//CONSTRUCTOR
public VentanaDibujo() {
setSize(430,300);
initComponents();
}
13
Analista Programador
INGENIA-CAFI
14
Analista Programador
INGENIA-CAFI
panControles.add(txtCY);
txtCY.setBounds(130, 40, 40, 20);
cboColor.setBackground(new Color(255, 255, 204));
cboColor.setModel(new DefaultComboBoxModel(new String[] { "Rojo", "Verde", "Azul" }));
cboColor.setSelectedIndex(0);
panControles.add(cboColor);
cboColor.setBounds(80, 10, 90, 20);
panPrincipal.add(panControles);
//SUB PANEL DEL BOTONES
panBotones.setLayout(new FlowLayout(java.awt.FlowLayout.CENTER, 5, 10));
panBotones.setBackground(new Color(255, 255, 204));
btnDibujar.setText("Dibujar");
btnDibujar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnDibujarActionPerformed(evt);
}
});
panBotones.add(btnDibujar);
btnLimpiar.setText("Limpiar");
btnLimpiar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnLimpiarActionPerformed(evt);
}
});
panBotones.add(btnLimpiar);
btnSalir.setText("Salir");
btnSalir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnSalirActionPerformed(evt);
}
});
panBotones.add(btnSalir);
panPrincipal.add(panBotones);
getContentPane().add(panPrincipal);
//PANEL DE DIBUJO
panDibujo = new JPanel() {
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
g2d.clearRect(0,0,getWidth(), getHeight());
15
Analista Programador
INGENIA-CAFI
16
Analista Programador
INGENIA-CAFI
// EJEMPLO 16
//Crear una Ventana Login que nos muestre un componente JOptionPane, en dos casos,
//uno si ha sido validado el usuario y la contrasea, y otro sino ha sido validado.
// Archivo: VentanaLogin.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
17
Analista Programador
INGENIA-CAFI
lblUsuario.setText("Usuario");
lblPassword.setText("Contrasea");
panSuperior.add(lblUsuario);
panSuperior.add(txtUsuario);
panSuperior.add(lblPassword);
panSuperior.add(txtPassword);
getContentPane().add(panSuperior);
//DISEO PANEL INFERIOR
panInferior.setBackground(new Color(204, 204, 255));
btnAceptar.setText("Aceptar");
btnAceptar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnAceptarActionPerformed(evt);
}
});
btnCancelar.setText("Cancelar");
btnCancelar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnCancelarActionPerformed(evt);
}
});
panInferior.add(btnAceptar);
panInferior.add(btnCancelar);
getContentPane().add(panInferior);
//DIMESIN DE LA VENTANA
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setSize(new Dimension(310, 140));
setLocation((screenSize.width-276)/2,(screenSize.height-127)/2);
}
private void btnCancelarActionPerformed(ActionEvent evt) {
//Ponemos a vaco
txtUsuario.setText("");
txtPassword.setText("");
}
private void btnAceptarActionPerformed(ActionEvent evt) {
//Verificamos el usuario y password
if ( txtUsuario.getText().equals("visita") &&
txtPassword.getText().equals("visita") ) {
//Muestra mensaje, que el usuario esta OK.
JOptionPane.showMessageDialog(this,
"Bienvenido " + txtUsuario.getText() , "Inicio de Sesin",
JOptionPane.INFORMATION_MESSAGE);
}
else {
JOptionPane.showMessageDialog(this,
"El usuario o contrasea es incorrecto.",
18
Analista Programador
INGENIA-CAFI
"Error",
JOptionPane.ERROR_MESSAGE);
}
}
private void exitForm(WindowEvent evt) {
System.exit(0);
}
//Mtodo Principal
public static void main( String args[] ) {
// crea un objeto de tipo VentanaLogin
VentanaLogin login = new VentanaLogin();
//Ttulo de la ventana
login.setTitle( "Inicio de Sesin" );
//Mostramos la ventana
login.show();
}
}
// EJEMPLO 17
//Crear un JInternalFrame (frames internos) que tenga sus propiedades habilitadas y un
// Archivo: FrameInterno.java
import javax.swing.JInternalFrame;
import java.awt.event.*;
import java.awt.*;
public class FrameInterno extends JInternalFrame {
static int openFrameCount = 0;
static final int xOffset = 30, yOffset = 30;
public FrameInterno() {
super("Documento Nro. " + (++openFrameCount),
true, //resizable
true, //closable
true, //maximizable
true);//iconifiable
setSize(300,300);
setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
setVisible(true);
}
}
19
Analista Programador
INGENIA-CAFI
//JFrame (frame contenedor) que contenga y pueda crear frames internos a traves de su
//JMenu
// Archivo: FrameContenedor.java
import javax.swing.JInternalFrame;
import javax.swing.JDesktopPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import java.awt.event.*;
import java.awt.*;
public class FrameContenedor extends JFrame {
JDesktopPane desktop;
public FrameContenedor() {
super("Frame Contenedor");
int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset,screenSize.width - inset*2, screenSize.height-inset*2);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
desktop = new JDesktopPane();
createFrame();
setContentPane(desktop);
setJMenuBar(createMenuBar());
}
protected JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Documento");
JMenuItem menuItemNuevo = new JMenuItem("Nuevo");
menuItemNuevo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
createFrame();
}
});
20
Analista Programador
INGENIA-CAFI
21
Analista Programador
INGENIA-CAFI
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class VentanaDibujo extends JFrame {
//COMPONENTES DE LA VENTANA
private JButton btnLimpiar;
private JLabel lblCentro;
private JPanel panBotones;
private JLabel lblFigura;
private JComboBox cboFigura;
private JPanel panSuperior;
private JPanel panControles;
private JTextField txtRadio;
private JTextField txtCY;
private JTextField txtCX;
private JLabel lblRadio;
private JComboBox cboColor;
private JPanel panPrincipal;
private JLabel lblColor;
private JButton btnSalir;
private JButton btnDibujar;
private JPanel panDibujo;
//OBJETOS DE DIBUJO
private Ellipse2D.Double circulo;
private Rectangle2D rectangulo;
// private Arc2D.Double arco;
//CONSTRUCTOR
public VentanaDibujo() {
setSize(430,300);
initComponents();
}
22
Analista Programador
INGENIA-CAFI
23
Analista Programador
INGENIA-CAFI
g2d.setBackground( Color.white );
24
Analista Programador
INGENIA-CAFI
if (cboFigura.getSelectedIndex() == 0)
g2d.fill( circulo );
else if (cboFigura.getSelectedIndex() == 1)
g2d.fill(rectangulo);
}
};
panDibujo.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true));
getContentPane().add(panDibujo);
}
private void btnDibujarActionPerformed(ActionEvent evt) {
//Redibuja el componente
panDibujo.repaint();
}
private void btnLimpiarActionPerformed(ActionEvent evt) {
//Valor de Inicio
txtRadio.setText("20.0");
txtCX.setText("0.0");
txtCY.setText("0.0");
cboColor.setSelectedIndex(2);
}
private void btnSalirActionPerformed(ActionEvent evt) {
WindowEvent we = new java.awt.event.WindowEvent(this,0);
exitForm(we);
}
private void exitForm(WindowEvent evt) {
System.exit(0);
}
public static void main(String args[]) {
new VentanaDibujo().show();
}
}
25
Analista Programador
INGENIA-CAFI
// EJEMPLO 18
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public MostrarInformacion() {
26
Analista Programador
INGENIA-CAFI
27
Analista Programador
INGENIA-CAFI
);
btnGrabar.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent evt ) {
onClickNavegador( 5 );
}
}
);
btnLimpiar.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent evt ) {
onClickNavegador( 6 );
}
}
);
panNavegador.add( btnPrimero );
panNavegador.add( btnAnterior );
panNavegador.add( btnSiguiente );
panNavegador.add( btnUltimo );
panNavegador.add( btnGrabar );
panNavegador.add( btnLimpiar );
getContentPane().add( panNavegador );
pack();
}
private void onClickNavegador( int accion ) {
try {
switch ( accion ) {
case 1 : System.out.println("Primero"); break;
case 2 : System.out.println("Anterior"); break;
case 3 : System.out.println("Siguiente"); break;
case 4 : System.out.println("Ultimo"); break;
case 5 : System.out.println("Grabar"); break;
case 6 : System.out.println("Limpiar"); break;
}
} catch( Exception e2 ) {
System.out.println( e2.getMessage() );
e2.printStackTrace();
}
}
// El main
public static void main( String args[] ) {
new MostrarInformacion().show();
}
}
28
Analista Programador
INGENIA-CAFI
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
29
Analista Programador
INGENIA-CAFI
30
Analista Programador
INGENIA-CAFI
switch ( accion ) {
case 1 : // columna 0 o sino 1
codigo=listaEmpleados[0][1];
txtCodigo.setText(codigo);
nombre=listaEmpleados[0][0];
31
Analista Programador
INGENIA-CAFI
txtNombre.setText(nombre);
break;
case 2 :
codigo=listaEmpleados[--posicionfila][1];
txtCodigo.setText(codigo);
nombre=listaEmpleados[posicionfila][0];
txtNombre.setText(nombre);
System.out.println("Anterior"); break;
case 3 : System.out.println("Siguiente");
codigo=listaEmpleados[++posicionfila][1];
txtCodigo.setText(codigo);
nombre=listaEmpleados[posicionfila][0];
txtNombre.setText(nombre);
break;
case 4 :
codigo=listaEmpleados[9][1];
txtCodigo.setText(codigo);
nombre=listaEmpleados[9][0];
txtNombre.setText(nombre);
System.out.println("Ultimo"); break;
case 5 : System.out.println("Grabar"); break;
case 6 : System.out.println("Limpiar");
txtCodigo.setText("");
txtNombre.setText("");
break;
}
} catch( Exception e2 ) {
System.out.println( e2.getMessage() );
e2.printStackTrace();
}
}
// El main
public static void main( String args[] ) {
new MostrarInformacion().show();
}
}
32