Translate-Traducir

31/5/14

Juego ping pong java codigo

Aqui les traigo el juego de ping pon para 2 jugadores  el primero se juega con las letras A y Z
y el segundo con flecha ARRIBA y flecha ABAJO .

Descargar
CODIGO FUENTE
EJECUTABLE
Esta es la main del juego las otras clases estan en el codigo fuente.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class Juegos<bolita> extends javax.swing.JFrame implements KeyListener {
private JPanel panel;
private Bola bolita;
private Raqueta raquetita1;
private Raqueta2 raquetita2;
private int golpes,golpes2, c;
private JLabel labelcontador;
private JLabel fondo;
private JLabel labelcontador2;

/**
* Launch the application.
* @throws InterruptedException  //OJO AQUI
*/
public static void main(String[] args) throws InterruptedException {
           Juegos frame = new Juegos();
           frame.setVisible(true);
            while(true){
frame.repaint();
frame.moverMundo();
   Thread.sleep(180);///AQUI ME DARA UN ERROR LE DOY A LA X Y ELIJO EL 1ERO
 
}
}
/**
* Constructor de la clase juego.
*/
public Juegos() {
setTitle("Ping Pong ");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(450, 100, 640, 450);
panel = new JPanel();
panel.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(panel);
panel.setLayout(null);
////////para poner fondo
((JPanel) getContentPane()).setOpaque(false);
        ImageIcon imagen = new ImageIcon(this.getClass().getResource("mesapinpong1.jpg"));
        /////////////////////////
     
     
        labelcontador = new JLabel("0");
        labelcontador.setForeground(Color.WHITE);
        labelcontador.setFont(new Font("Monospaced", Font.BOLD, 17));
        labelcontador.setBounds(93, 0, 73, 18);
        panel.add(labelcontador);
     
        labelcontador2 = new JLabel("0");
        labelcontador2.setForeground(Color.WHITE);
        labelcontador2.setFont(new Font("Monospaced", Font.BOLD, 17));
        labelcontador2.setBounds(485, 2, 56, 16);
        panel.add(labelcontador2);
        fondo = new JLabel();
        fondo.setIcon(imagen);
        getLayeredPane().add(fondo, JLayeredPane.FRAME_CONTENT_LAYER);
        fondo.setBounds(0, 0, 640, 450);
        getContentPane().add(fondo, BorderLayout.CENTER);
        this.setSize(640, 484);
        this.setLocationRelativeTo(null);
bolita=new Bola(getWidth(),getHeight());
raquetita1=new Raqueta(getHeight());
raquetita2=new Raqueta2(getHeight());
addKeyListener(this);
golpes=0;
golpes2=0;
//Sonido.FONDO.loop();
//createBufferStrategy(2);
//estrategia = this.getBufferStrategy();


}
public void  paint(Graphics g ){
super.paint(g);
Graphics2D g2d=(Graphics2D)g;

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,(RenderingHints.VALUE_ANTIALIAS_ON));
g2d.setColor(Color.GREEN);
bolita.pintarBola(g2d);
g2d.setColor(Color.RED);
raquetita1.pintarRaqueta1(g2d);
g2d.setColor(Color.YELLOW);
raquetita2.pintarRaqueta2(g2d);
}
public void moverMundo(){
bolita.moverBola();
if(colision()){
bolita.rebotaBola();
golpes=golpes+1;
//Sonido.REBOTEBOLA.play();
labelcontador.setText(String.valueOf(golpes/2));

}
if(colision2()){
bolita.rebotaBola();
golpes2=golpes2+1;
//Sonido.REBOTEBOLA.play();
labelcontador2.setText(String.valueOf(golpes2/2));

}
if(bolita.TocaFondo()){

gameOver();
}

}
public boolean colision(){
return bolita.limiteBola().intersects(raquetita1.limiteRaqueta1());
}
public boolean colision2(){
return bolita.limiteBola().intersects(raquetita2.limiteRaqueta2());
}

@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_A){
raquetita1.moverRaquetaarriba1();
}
if(e.getKeyCode()==KeyEvent.VK_Z){
raquetita1.moverRaquetaabajo1();
}
//////////////////////////////////////////
if(e.getKeyCode()==KeyEvent.VK_UP){
raquetita2.moverRaquetaarriba2();
}
if(e.getKeyCode()==KeyEvent.VK_DOWN){
raquetita2.moverRaquetaabajo2();
}
}

@Override
public void keyReleased(KeyEvent e) {

}

@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}
public void gameOver() {
//Sonido.FONDO.stop();
//Sonido.GAMEOVER.play();
if(golpes>golpes2){
JOptionPane.showMessageDialog(this, "El jugador 1 ganó", "Game Over", JOptionPane.YES_NO_OPTION);
System.exit(0);
}else{
if(golpes<golpes2){
JOptionPane.showMessageDialog(this, "El jugador 2 ganó", "Game Over", JOptionPane.YES_NO_OPTION);
System.exit(0);
}else{
JOptionPane.showMessageDialog(this, "Empate", "Game Over", JOptionPane.YES_NO_OPTION);
System.exit(0);
}
}
}
}

22/5/14

Pantalla para configurar un procesador de textos

Se debe desarrollar una pantalla para configurar ciertas características de un procesador de texto.
Debe aparecer y poder seleccionarse los márgenes superior e inferior de la página.
Los márgenes pueden ir en el rango de 0 a 10. Desplazar las líneas a medida que modificamos los márgenes.


Descargar fichero fuente.
Descargar fichero ejecutable.

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.SpinnerNumberModel;

public class OpcionesProcesador extends JFrame implements ActionListener, ChangeListener{
    private static final long serialVersionUID = -3061452484755028715L;
    private JPanel contentPane;
    private JButton btnInicializar;
    private JSpinner spMargenSup;
    private JSpinner spMargenInf;
    private JComboBox<String> cbOrientacion;
    private int margenSup, margenInf;
    private boolean apaisado;

    private int modifMargenSup(int valor){
        this.margenSup = valor;
        return this.getMargenSup();
    }

    private int modifMargenInf(int valor){
        this.margenInf = valor;
        return this.getMargenInf();
    }

    public static void main(String[] args) {
        OpcionesProcesador frame = new OpcionesProcesador();
        frame.setVisible(true);
    }

    public OpcionesProcesador() {
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 600, 472);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
       
        spMargenSup = new JSpinner();
        spMargenSup.setModel(new SpinnerNumberModel(0, 0, 250, 1));
        spMargenSup.setName("spMargenSup");
        spMargenSup.addChangeListener(this);
        spMargenSup.setFont(new Font("Arial", Font.PLAIN, 14));
        spMargenSup.setBounds(218, 46, 57, 30);
        contentPane.add(spMargenSup);
       
        spMargenInf = new JSpinner();
        spMargenInf.addChangeListener(this);
        spMargenInf.setModel(new SpinnerNumberModel(0, 0, 250, 1));
        spMargenInf.setName("spMargenInf");
        spMargenInf.setFont(new Font("Arial", Font.PLAIN, 14));
        spMargenInf.setBounds(218, 122, 57, 30);
       
        contentPane.add(spMargenInf);
       
        cbOrientacion = new JComboBox<String>();
        cbOrientacion.setName("cbOrientacion");
        cbOrientacion.addActionListener(this);
        cbOrientacion.setModel(new DefaultComboBoxModel<String>(new String[] {"Horizontal", "Vertical"}));
        cbOrientacion.setFont(new Font("Arial", Font.PLAIN, 14));
        cbOrientacion.setBounds(352, 46, 183, 30);
        cbOrientacion.setSelectedIndex(1);
        contentPane.add(cbOrientacion);
       
        btnInicializar = new JButton("Inicializar");
        btnInicializar.setName("btnInicializar");
        btnInicializar.setFont(new Font("Arial", Font.PLAIN, 14));
        btnInicializar.setBounds(45, 233, 125, 40);
        btnInicializar.addActionListener(this);
        contentPane.add(btnInicializar);
       
        JLabel lblOrientacion = new JLabel("Orientaci\u00F3n de la p\u00E1gina");
        lblOrientacion.setName("lblOrientacion");
        lblOrientacion.setHorizontalAlignment(SwingConstants.CENTER);
        lblOrientacion.setFont(new Font("Arial", Font.BOLD, 12));
        lblOrientacion.setBounds(352, 11, 183, 24);
        contentPane.add(lblOrientacion);
       
        JLabel lblHoja = new JLabel("Hoja");
        lblHoja.setName("lblHoja");
        lblHoja.setHorizontalAlignment(SwingConstants.CENTER);
        lblHoja.setFont(new Font("Arial", Font.BOLD, 12));
        lblHoja.setBounds(48, 11, 93, 24);
        contentPane.add(lblHoja);
       
        JLabel lblMargenSuperior = new JLabel("Margen Superior");
        lblMargenSuperior.setHorizontalAlignment(SwingConstants.CENTER);
        lblMargenSuperior.setFont(new Font("Arial", Font.BOLD, 12));
        lblMargenSuperior.setBounds(189, 11, 115, 24);
        contentPane.add(lblMargenSuperior);
       
        JLabel lblMargenInferior = new JLabel("Margen Inferior");
        lblMargenInferior.setHorizontalAlignment(SwingConstants.CENTER);
        lblMargenInferior.setFont(new Font("Arial", Font.BOLD, 12));
        lblMargenInferior.setBounds(189, 87, 115, 24);
        contentPane.add(lblMargenInferior);
       
        Inicializar();
    }
   
    private void Inicializar(){
        // Inicializamos las variables
        margenSup = 0;
        spMargenSup.setValue(0);
        margenInf = 0;
        spMargenInf.setValue(0);
        setApaisado(false);
        cbOrientacion.setSelectedIndex(1);
    }
   
    @Override
    public void paint(Graphics g){
        super.paint(g);
        // dependiento si la selección de apaisado este o no activa pintamos la hoja en vertical u horizontal
        if (isApaisado()){
            // La página está en horizontal
            g.setColor(Color.BLUE);
            g.drawRect(20, 70, 180, 120);

            g.setColor(Color.RED);
            g.drawLine(20, 70+this.getMargenSup(), 200, 70+this.getMargenSup());
            g.drawLine(20, 190-this.getMargenInf(), 200, 190-this.getMargenInf());

            g.drawRect(355, 120, 180, 120);
        } else {
            // La página está en vertical
            g.setColor(Color.BLUE);
            g.drawRect(50, 70, 120, 180);

            g.setColor(Color.RED);
            g.drawLine(50, 70+this.getMargenSup(), 170, 70+this.getMargenSup());
            g.drawLine(50, 250-this.getMargenInf(), 170, 250-this.getMargenInf());

            g.drawRect(385, 120, 120, 180);           
        }
    }

    @Override
    public void actionPerformed(ActionEvent ev) {
        // Comprobamos si el evento que se ha detectado es de un JButton o de un JComboBox
        if (ev.getSource() instanceof JButton){
            JButton boton = (JButton) ev.getSource();
            switch (boton.getName()){
            case "btnInicializar":
                Inicializar();
                repaint();
                break;
            }
        } else if (ev.getSource() instanceof JComboBox){
            @SuppressWarnings("rawtypes")
            JComboBox combo = (JComboBox) ev.getSource();
            switch ((Integer) combo.getSelectedIndex()){
            case 0:
                setApaisado(true);
                break;
            case 1:
                setApaisado(false);
                break;
            }
            repaint();
        }   
    }

    @Override
    public void stateChanged(ChangeEvent ev) {
        // Comprobamos si el evento que se ha detectado es de un JSpinner
        if (ev.getSource() instanceof JSpinner){
            JSpinner spinner = (JSpinner) ev.getSource();
            int valor = (Integer) spinner.getValue();
            switch (spinner.getName()){
            case "spMargenSup":
                this.modifMargenSup(valor);
                break;
            case "spMargenInf":
                this.modifMargenInf(valor);
                break;
            }
            repaint();
        }
    }

    public boolean isApaisado() {
        return apaisado;
    }

    public void setApaisado(boolean apaisado) {
        this.apaisado = apaisado;
    }
   
    public int getMargenSup() {
        return margenSup;
    }

    public int getMargenInf() {
        return margenInf;
    }
   
}

20/5/14

Ejemplo Graphics

Crear una aplicación que muestre un círculo en medio de la pantalla y mediante dos botones permitir que se desplace a izquierda o derecha.

Descargar código.
Descargar ejecutable.

import java.awt.Color;

public class Ejemplo5 extends JFrame implements ActionListener{

    private static final long serialVersionUID = -8651410754270577359L;
    private JPanel contentPane;
    private JButton btnUp;
    private JButton btnLeft;
    private JButton btnRight;
    private JButton btnDown;
    private int coord_x, coord_y;
    private int tam_x, tam_y;
    private JPanel panel_1;
    private JButton btnMenos;
    private JButton btnMas;
    private JPanel panel_2;
    private JButton btnCuadrado;
    private JButton btnCirculo;
    private String figura, color;
    private JPanel panel_3;
    private JButton btnRojo;
    private JButton btnVerde;
    private JButton btnAzul;
    private JButton btnAmarillo;
    private JButton btnNaranja;

    public static void main(String[] args) {
        Ejemplo5 frame = new Ejemplo5();
        frame.setVisible(true);
    }

    public Ejemplo5() {
        setResizable(false);
        this.setCoord_x(100);
        this.setCoord_y(100);
        this.setTam_x(100);
        this.setTam_y(100);
        this.setFigura("circulo");
        this.setColor("rojo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 647, 496);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
       
        JPanel panel = new JPanel();
        panel.setBounds(359, 357, 212, 100);
        panel.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
        panel.setBackground(Color.LIGHT_GRAY);
       
        panel_1 = new JPanel();
        panel_1.setBounds(273, 357, 76, 100);
        panel_1.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
        panel_1.setBackground(Color.LIGHT_GRAY);
       
        panel_2 = new JPanel();
        panel_2.setBounds(149, 357, 114, 100);
        panel_2.setBackground(Color.LIGHT_GRAY);
        panel_2.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
        panel_2.setLayout(null);
       
        btnCuadrado = new JButton("Cuadrado");
        btnCuadrado.setName("btnCuadrado");
        btnCuadrado.setBounds(10, 11, 89, 23);
        btnCuadrado.addActionListener(this);
        panel_2.add(btnCuadrado);
       
        btnCirculo = new JButton("Circulo");
        btnCirculo.setName("btnCirculo");
        btnCirculo.setBounds(10, 42, 89, 23);
        btnCirculo.addActionListener(this);
        panel_2.add(btnCirculo);
       
        btnMenos = new JButton("-");
        btnMenos.setName("btnMenos");
        btnMenos.setBounds(17, 67, 42, 23);
        btnMenos.setFont(new Font("Arial", Font.PLAIN, 11));
        btnMenos.addActionListener(this);
       
        btnMas = new JButton("+");
        btnMas.setName("btnMas");
        btnMas.setBounds(17, 10, 42, 23);
        btnMas.setFont(new Font("Arial", Font.PLAIN, 11));
        btnMas.addActionListener(this);
       
        JLabel lblTamao = new JLabel("TAMA\u00D1O");
        lblTamao.setBounds(15, 43, 45, 14);
        lblTamao.setFont(new Font("Arial", Font.PLAIN, 11));
        lblTamao.setHorizontalAlignment(SwingConstants.CENTER);
        panel_1.setLayout(null);
        panel_1.add(btnMenos);
        panel_1.add(btnMas);
        panel_1.add(lblTamao);
        panel.setLayout(null);
       
        btnUp = new JButton("Arriba");
        btnUp.setFont(new Font("Arial", Font.PLAIN, 11));
        btnUp.setName("btnUp");
        btnUp.setBounds(71, 7, 70, 23);
        panel.add(btnUp);
        btnUp.addActionListener(this);
       
        btnDown = new JButton("Abajo");
        btnDown.setFont(new Font("Arial", Font.PLAIN, 11));
        btnDown.setName("btnDown");
        btnDown.setBounds(71, 67, 70, 23);
        panel.add(btnDown);
        btnDown.addActionListener(this);
       
        btnLeft = new JButton("Izq.");
        btnLeft.setFont(new Font("Arial", Font.PLAIN, 11));
        btnLeft.setName("btnLeft");
        btnLeft.setBounds(4, 38, 65, 23);
        panel.add(btnLeft);
        btnLeft.addActionListener(this);
       
        btnRight = new JButton("Der.");
        btnRight.setFont(new Font("Arial", Font.PLAIN, 11));
        btnRight.setName("btnRight");
        btnRight.setBounds(142, 38, 65, 23);
        panel.add(btnRight);
       
        JLabel lblDireccin = new JLabel("DIRECCI\u00D3N");
        lblDireccin.setHorizontalAlignment(SwingConstants.CENTER);
        lblDireccin.setFont(new Font("Arial", Font.PLAIN, 11));
        lblDireccin.setBounds(73, 42, 65, 14);
        panel.add(lblDireccin);
        btnRight.addActionListener(this);
        contentPane.setLayout(null);
        contentPane.add(panel_2);
        contentPane.add(panel_1);
        contentPane.add(panel);
       
        panel_3 = new JPanel();
        panel_3.setBounds(581, 12, 50, 445);
        contentPane.add(panel_3);
        panel_3.setLayout(null);
       
        btnRojo = new JButton("");
        btnRojo.setIgnoreRepaint(true);
        btnRojo.setBorderPainted(false);
        btnRojo.setName("btnRojo");
        btnRojo.setBackground(Color.RED);
        btnRojo.setBounds(6, 11, 38, 38);
        btnRojo.addActionListener(this);
        panel_3.add(btnRojo);
       
        btnVerde = new JButton("");
        btnVerde.setName("btnVerde");
        btnVerde.setIgnoreRepaint(true);
        btnVerde.setBorderPainted(false);
        btnVerde.setBackground(Color.GREEN);
        btnVerde.setBounds(6, 60, 38, 38);
        btnVerde.addActionListener(this);
        panel_3.add(btnVerde);
       
        btnAzul = new JButton("");
        btnAzul.setName("btnAzul");
        btnAzul.setIgnoreRepaint(true);
        btnAzul.setBorderPainted(false);
        btnAzul.setBackground(Color.BLUE);
        btnAzul.setBounds(6, 109, 38, 38);
        btnAzul.addActionListener(this);
        panel_3.add(btnAzul);
       
        btnAmarillo = new JButton("");
        btnAmarillo.setName("btnAmarillo");
        btnAmarillo.setIgnoreRepaint(true);
        btnAmarillo.setBorderPainted(false);
        btnAmarillo.setBackground(Color.YELLOW);
        btnAmarillo.setBounds(6, 157, 38, 38);
        btnAmarillo.addActionListener(this);
        panel_3.add(btnAmarillo);
       
        btnNaranja = new JButton("");
        btnNaranja.setName("btnNaranja");
        btnNaranja.setIgnoreRepaint(true);
        btnNaranja.setBorderPainted(false);
        btnNaranja.setBackground(Color.ORANGE);
        btnNaranja.setBounds(6, 206, 38, 38);
        btnNaranja.addActionListener(this);
        panel_3.add(btnNaranja);
    }
   
    @Override
    public void paint(Graphics g){
        super.paint(g);
       
        switch(this.getColor()){
        case "rojo":
            g.setColor(Color.RED);
            break;
        case "verde":
            g.setColor(Color.GREEN);
            break;
        case "azul":
            g.setColor(Color.BLUE);
            break;
        case "amarillo":
            g.setColor(Color.YELLOW);
            break;
        case "naranja":
            g.setColor(Color.ORANGE);
            break;
        }
        switch (this.getFigura()){
        case "circulo":
            g.fillOval(this.getCoord_x(), this.getCoord_y(), this.getTam_x(), this.getTam_y());
            break;
        case "cuadrado":
            g.fillRect(this.getCoord_x(), this.getCoord_y(), this.getTam_x(), this.getTam_y());
            break;
        }
    }

    @Override
    public void actionPerformed(ActionEvent ev) {
        if (ev.getSource() instanceof JButton){
            JButton boton = (JButton) ev.getSource();
            switch (boton.getName()){
            case "btnUp":
                this.setCoord_y(this.getCoord_y()-10);
                break;
            case "btnDown":
                this.setCoord_y(this.getCoord_y()+10);
                break;
            case "btnLeft":
                this.setCoord_x(this.getCoord_x()-10);
                break;
            case "btnRight":
                this.setCoord_x(this.getCoord_x()+10);
                break;
            case "btnMas":
                this.setTam_x(this.getTam_x()+10);
                this.setTam_y(this.getTam_y()+10);
                break;
            case "btnMenos":
                this.setTam_x(this.getTam_x()-10);
                this.setTam_y(this.getTam_y()-10);
                break;
            case "btnCirculo":
                this.setFigura("circulo");
                break;
            case "btnCuadrado":
                this.setFigura("cuadrado");
                break;
            case "btnRojo":
                this.setColor("rojo");
                break;
            case "btnVerde":
                this.setColor("verde");
                break;
            case "btnAzul":
                this.setColor("azul");
                break;
            case "btnAmarillo":
                this.setColor("amarillo");
                break;
            case "btnNaranja":
                this.setColor("naranja");
                break;
            }
            repaint();
        }
    }

    public int getCoord_x() {
        return coord_x;
    }

    public void setCoord_x(int coord_x) {
        this.coord_x = coord_x;
    }

    public int getCoord_y() {
        return coord_y;
    }

    public void setCoord_y(int coord_y) {
        this.coord_y = coord_y;
    }

    public int getTam_y() {
        return tam_y;
    }

    public void setTam_y(int tam_y) {
        this.tam_y = tam_y;
    }

    public int getTam_x() {
        return tam_x;
    }

    public void setTam_x(int tam_x) {
        this.tam_x = tam_x;
    }

    public String getFigura() {
        return figura;
    }

    public void setFigura(String figura) {
        this.figura = figura;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

18/5/14

El embalse

Un embalse debe manejar la cantidad de mts3 de agua que pasa por cada compuerta. 
Por cada compuerta puede pasar un caudal de 100 mts3 x seg.
Cuando presionamos el botón "Actualizar caudal" mostramos el nivel de caudal actual y un mensaje que indica si el caudal es:

  • Bajo (0 a 100 mts3 x seg.)
  • Medio (> 100 -200 mts3. x seg.)
  • Alto (>200 mts3 x seg.)
Para la selección del caudal de cada compuerta utilizar componentes de tipo JSpinner.

Solución:

Hemos optado por simular tres compuertas para esta simulación.

Descargar código fuente.
Descargar ejecutable.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Embalse extends JFrame implements ActionListener, ChangeListener{

    private static final long serialVersionUID = 5711819577192515672L;
    private JPanel contentPane;
    private JButton btnActualizar;
    private JLabel lblCaudal1;
    private JLabel lblCaudal2;
    private JLabel lblCaudal3;
    private JSpinner spCompuerta2;
    private JSpinner spCompuerta1;
    private JSpinner spCompuerta3;
    private JLabel lblCaudal;
    private int caudalTotal;

// Metodo Principal
    public static void main(String[] args) {
        Embalse frame = new Embalse();
        frame.setVisible(true);
    }

// Constructor, inicializamos los Atributos de la clase
    public Embalse() {
        setCaudalTotal(0);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
       
        lblCaudal = new JLabel("EMBALSE CERRADO");
        lblCaudal.setHorizontalAlignment(SwingConstants.CENTER);
        lblCaudal.setFont(new Font("Arial", Font.BOLD, 22));
        lblCaudal.setName("lblCaudal");
        lblCaudal.setBounds(10, 28, 424, 41);
        contentPane.add(lblCaudal);
       
        JPanel compuerta1 = new JPanel();
        compuerta1.setBackground(Color.LIGHT_GRAY);
        compuerta1.setName("compuerta1");
        compuerta1.setBounds(10, 94, 134, 82);
        contentPane.add(compuerta1);
        compuerta1.setLayout(new BorderLayout(0, 0));
       
        JLabel lblCaudal_1 = new JLabel("COMPUERTA 1");
        lblCaudal_1.setHorizontalAlignment(SwingConstants.CENTER);
        lblCaudal_1.setFont(new Font("Arial", Font.BOLD, 14));
        compuerta1.add(lblCaudal_1, BorderLayout.NORTH);
       
        lblCaudal1 = new JLabel("CERRADA");
        lblCaudal1.setBackground(Color.WHITE);
        lblCaudal1.setOpaque(true);
        lblCaudal1.setName("lblCaudal1");
        compuerta1.add(lblCaudal1, BorderLayout.SOUTH);
        lblCaudal1.setFont(new Font("Arial", Font.BOLD, 14));
        lblCaudal1.setHorizontalAlignment(SwingConstants.CENTER);
       
        spCompuerta1 = new JSpinner();
        spCompuerta1.addChangeListener(this);
        spCompuerta1.setModel(new SpinnerNumberModel(0, 0, 300, 1));
        spCompuerta1.setFont(new Font("Arial Black", Font.BOLD, 22));
        spCompuerta1.setName("spCompuerta1");
        compuerta1.add(spCompuerta1, BorderLayout.CENTER);
       
        JPanel compuerta2 = new JPanel();
        compuerta2.setBackground(Color.LIGHT_GRAY);
        compuerta2.setName("compuerta2");
        compuerta2.setBounds(154, 94, 134, 82);
        contentPane.add(compuerta2);
        compuerta2.setLayout(new BorderLayout(0, 0));
       
        JLabel lblNewLabel = new JLabel("COMPUERTA 2");
        lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
        lblNewLabel.setFont(new Font("Arial", Font.BOLD, 14));
        compuerta2.add(lblNewLabel, BorderLayout.NORTH);
       
        lblCaudal2 = new JLabel("CERRADA");
        lblCaudal2.setBackground(Color.WHITE);
        lblCaudal2.setOpaque(true);
        lblCaudal2.setName("lblCaudal2");
        lblCaudal2.setHorizontalAlignment(SwingConstants.CENTER);
        lblCaudal2.setFont(new Font("Arial", Font.BOLD, 14));
        compuerta2.add(lblCaudal2, BorderLayout.SOUTH);
       
        spCompuerta2 = new JSpinner();
        spCompuerta2.addChangeListener(this);
        spCompuerta2.setModel(new SpinnerNumberModel(0, 0, 300, 1));
        spCompuerta2.setFont(new Font("Arial Black", Font.BOLD, 22));
        spCompuerta2.setName("spCompuerta2");
        compuerta2.add(spCompuerta2, BorderLayout.CENTER);
       
        JPanel compuerta3 = new JPanel();
        compuerta3.setBackground(Color.LIGHT_GRAY);
        compuerta3.setName("compuerta3");
        compuerta3.setBounds(298, 94, 134, 82);
        contentPane.add(compuerta3);
        compuerta3.setLayout(new BorderLayout(0, 0));
       
        JLabel lblCompuerta = new JLabel("COMPUERTA 3");
        lblCompuerta.setHorizontalAlignment(SwingConstants.CENTER);
        lblCompuerta.setFont(new Font("Arial", Font.BOLD, 14));
        compuerta3.add(lblCompuerta, BorderLayout.NORTH);
       
        lblCaudal3 = new JLabel("CERRADA");
        lblCaudal3.setBackground(Color.WHITE);
        lblCaudal3.setOpaque(true);
        lblCaudal3.setName("lblCaudal3");
        lblCaudal3.setHorizontalAlignment(SwingConstants.CENTER);
        lblCaudal3.setFont(new Font("Arial", Font.BOLD, 14));
        compuerta3.add(lblCaudal3, BorderLayout.SOUTH);
       
        spCompuerta3 = new JSpinner();
        spCompuerta3.addChangeListener(this);
        spCompuerta3.setModel(new SpinnerNumberModel(0, 0, 300, 1));
        spCompuerta3.setName("spCompuerta3");
        spCompuerta3.setFont(new Font("Arial Black", Font.BOLD, 22));
        compuerta3.add(spCompuerta3, BorderLayout.CENTER);
       
        btnActualizar = new JButton("Actualizar Caudal");
        btnActualizar.setName("btnActualizar");
        btnActualizar.setFont(new Font("Arial", Font.PLAIN, 16));
        btnActualizar.setBounds(129, 209, 185, 41);
        btnActualizar.addActionListener(this);
        contentPane.add(btnActualizar);
    }

// Método actalizar el caudal del embalse
    private void actualizarCaudal(){
        int caudal1, caudal2, caudal3;
        // sumamos el caudal de las tres compuertas
        caudal1 = (Integer) spCompuerta1.getValue();
        caudal2 = (Integer) spCompuerta2.getValue();
        caudal3 = (Integer) spCompuerta3.getValue();
        this.setCaudalTotal(caudal1 + caudal2 + caudal3);
        this.modificarEtiquetas(caudal1, caudal2, caudal3);
    }
   
    private void modificarEtiquetas(int c1, int c2, int c3){
        // Mostramos el nivel del caudal de la compuerta 1
        if (c1==0){
            // El caudal es 0 -> la compuerta está cerrada
            this.lblCaudal1.setText("CERRADA");
            this.lblCaudal1.setBackground(Color.white);               
        }else if (c1<=100){
            this.lblCaudal1.setText("CAUDAL BAJO");
            this.lblCaudal1.setBackground(Color.cyan);
        } else if (c1>100 && c1<=200){
            this.lblCaudal1.setText("CAUDAL MEDIO");
            this.lblCaudal1.setBackground(Color.green);
        } else {
            this.lblCaudal1.setText("CAUDAL ALTO");           
            this.lblCaudal1.setBackground(Color.orange);
        }
        // Mostramos el nivel del caudal de la compuerta 2
        if (c2==0){
            // El caudal es 0 -> la compuerta está cerrada
            this.lblCaudal2.setText("CERRADA");
            this.lblCaudal2.setBackground(Color.white);               
        }else if (c2<=100){
            this.lblCaudal2.setText("CAUDAL BAJO");
            this.lblCaudal2.setBackground(Color.cyan);
        } else if (c2>100 && c2<=200){
            this.lblCaudal2.setText("CAUDAL MEDIO");
            this.lblCaudal2.setBackground(Color.green);
        } else {
            this.lblCaudal2.setText("CAUDAL ALTO");
            this.lblCaudal2.setBackground(Color.orange);
        }
        // Mostramos el nivel del caudal de la compuerta 3
        if (c3==0){
            // El caudal es 0 -> la compuerta está cerrada
            this.lblCaudal3.setText("CERRADA");
            this.lblCaudal3.setBackground(Color.white);               
        }else if (c3<=100){
            this.lblCaudal3.setText("CAUDAL BAJO");
            this.lblCaudal3.setBackground(Color.cyan);
        } else if (c3>100 && c3<=200){
            this.lblCaudal3.setText("CAUDAL MEDIO");
            this.lblCaudal3.setBackground(Color.green);
        } else {
            this.lblCaudal3.setText("CAUDAL ALTO");           
            this.lblCaudal3.setBackground(Color.orange);
        }
        // Mostramos el nivel del caudal general
        if (this.caudalTotal==0){
            // El caudal es 0 -> todas las compuertas están cerradas
            this.lblCaudal.setText("EMBALSE CERRADO");
        }else if (this.caudalTotal<=100){
            this.lblCaudal.setText("CAUDAL BAJO");
        } else if (this.caudalTotal>100 && this.caudalTotal<=200){
            this.lblCaudal.setText("CAUDAL MEDIO");
        } else {
            this.lblCaudal.setText("CAUDAL ALTO");           
        }

    }
   
// Escuchador: Método que se ejecuta cuando se registra una acción
    @Override
    public void actionPerformed(ActionEvent e) {
        // Comprobamos que el evento que ha producido la acción sea del tipo JButton
        if (e.getSource() instanceof JButton){
            // Comprobamos que botón ha sido el que ha producido la acción
            JButton boton = (JButton) e.getSource();
            switch (boton.getName()){
            case "btnActualizar":
                actualizarCaudal();
                break;
            }
        }       
    }

// Escuchador de cambio de los JSpinner: Método que se ejecuta cuando se registra un cambio en el estado
    @Override
    public void stateChanged(ChangeEvent e) {
        // Comprobamos que el componente que ha cambiado de estado sea del tipo JSpinner
        if (e.getSource() instanceof JSpinner){
            JSpinner spinner = (JSpinner) e.getSource();
            // Comprobamos que JSpinner ha sido el que ha cambiado de estado
            switch (spinner.getName()){
            case "spCompuerta1":
                int c1 = (Integer) spCompuerta1.getValue();
                if (c1==0){
                    this.lblCaudal1.setText("CERRADA");
                    this.lblCaudal1.setBackground(Color.white);               
                }else if (c1<=100){
                    this.lblCaudal1.setText("CAUDAL BAJO");
                    this.lblCaudal1.setBackground(Color.cyan);
                } else if (c1>100 && c1<=200){
                    this.lblCaudal1.setText("CAUDAL MEDIO");
                    this.lblCaudal1.setBackground(Color.green);
                } else {
                    this.lblCaudal1.setText("CAUDAL ALTO");
                    this.lblCaudal1.setBackground(Color.orange);
                }
                break;
            case "spCompuerta2":
                int c2 = (Integer) spCompuerta2.getValue();
                if (c2==0){
                    this.lblCaudal2.setText("CERRADA");
                    this.lblCaudal2.setBackground(Color.white);               
                }else if (c2<=100){
                    this.lblCaudal2.setText("CAUDAL BAJO");
                    this.lblCaudal2.setBackground(Color.cyan);
                } else if (c2>100 && c2<=200){
                    this.lblCaudal2.setText("CAUDAL MEDIO");
                    this.lblCaudal2.setBackground(Color.green);
                } else {
                    this.lblCaudal2.setText("CAUDAL ALTO");           
                    this.lblCaudal2.setBackground(Color.orange);
                }
                break;
            case "spCompuerta3":
                int c3 = (Integer) spCompuerta3.getValue();
                if (c3==0){
                    this.lblCaudal3.setText("CERRADA");
                    this.lblCaudal3.setBackground(Color.white);               
                }else if (c3<=100){
                    this.lblCaudal3.setText("CAUDAL BAJO");
                    this.lblCaudal3.setBackground(Color.cyan);
                } else if (c3>100 && c3<=200){
                    this.lblCaudal3.setText("CAUDAL MEDIO");
                    this.lblCaudal3.setBackground(Color.green);
                } else {
                    this.lblCaudal3.setText("CAUDAL ALTO");           
                    this.lblCaudal3.setBackground(Color.orange);
                }
                break;
            }
        }
    }

// Getter del atributo caudalTotal
    public int getCaudalTotal() {
        return caudalTotal;
    }

// Setter del atributo caudalTotal
    // es private porque no queremos que sea accesible desde fuera del objeto
    private void setCaudalTotal(int caudalTotal) {
        this.caudalTotal = caudalTotal;
    }
}

Implementar un programa para la extracción de dinero de un cajero automático






Se debe poder fijar la cantidad de dinero a extraer:
  • Disponer un control de tipo JComboBox (disponer los valores: 0,50,150 etc. hasta 500)
Por otro lado poder seleccionar el tipo de cuenta (almacenar en otro JComboBox los textos "Caja de Ahorro" y "Cuenta Corriente".

Se debe tener en cuenta que:

  • De Caja de Ahorro se puede extraer hasta 200.
  • De Cuenta Corriente se puede extraer hasta 400.
Al presionar el botón extraer mostrar en una label el texto "correcto" si para el tipo de cuenta el importe está permitido.

Inicialmente el cajero tiene almacenado un monto de 3000 euros. 


Restar en cada extracción el monto respectivo y mostrar el mensaje "fuera de servicio" cuando se intenta extraer más del dinero que hay en el cajero.

Solución:

Descargar código fuente.
Descargar ejecutable.

Desarrollar un programa que muestre un panel para extracción de una bebida

Por un lado disponer tres objetos de la clase JRadioButton (radio1, radio2 y radio 3), 
configurar el primero para que aparezca seleccionado (propiedad "selected")

Disponer dos objetos de la clase JComboBox (comboEuros y comboCentimos)
En el JComboBox comboEuros inicializar la propiedad model con los valores del 0 al 5 (hay que cargar un valor por cada línea en el diálogo que aparece)
En forma similar el segundo JComboBox cargamos los valores: 0,10,20,30 etc. hasta 90.

Se sabe que :
  • Bebida A tiene un costo de 0 euros 80 centimos. 
  • Bebida B tiene un costo de 1 euros 20 centimos. 
  • Bebida C tiene un costo de 3 euros 10 centimos.
Cuando se presiona el botón extraer, mostrar en la label de resultado el texto "Correcto" o "Incorrecto" dependiendo la bebida seleccionada y la cantidad de pesos y centavos seleccionados.

Solución:

Descargar el código fuente.
Descargar ejecutable.

Desarrollar un programa que muestre el tablero de un ascensor

Desarrollar un programa que muestre el tablero de un ascensor:


El funcionamiento es el siguiente:
  • Inicialmente el ascensor está en el piso 1.
  • Por ejemplo: si se presiona el botón 3 se muestra en un JLabel el piso número 3 y en otra JLabel la dirección. La cadena "Sube", en caso de presionar un piso superior al actual. Mostramos la cadena "Baja" en el JLabel si se presiona un piso inferior. y si el piso donde se encuentra actualmente coincide con el presionado luego mostrar el mensaje "Piso actual".
Solución:
Descargar el ejecutable
Descargar código fuente

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

public class Ascensor extends JFrame implements ActionListener{

    private static final long serialVersionUID = -6298610548027787167L;
    private JPanel contentPane;
    private JButton btn4;
    private JButton btn1;
    private JButton btn2;
    private JButton btn3;
    private JLabel direccion;
    private JLabel piso;
    private int pisoActual;

    public static void main(String[] args) {
        Ascensor frame = new Ascensor();
        frame.setVisible(true);
    }

    public Ascensor() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 444, 387);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        pisoActual = 1;
       
        JLabel lblPiso = new JLabel("PISO:");
        lblPiso.setHorizontalAlignment(SwingConstants.RIGHT);
        lblPiso.setName("lblPiso");
        lblPiso.setFont(new Font("Arial", Font.BOLD, 18));
        lblPiso.setBounds(136, 32, 127, 41);
        contentPane.add(lblPiso);
       
        JLabel lblDireccin = new JLabel("DIRECCI\u00D3N:");
        lblDireccin.setName("lblPiso");
        lblDireccin.setHorizontalAlignment(SwingConstants.RIGHT);
        lblDireccin.setFont(new Font("Arial", Font.BOLD, 18));
        lblDireccin.setBounds(136, 84, 127, 41);
        contentPane.add(lblDireccin);
       
        piso = new JLabel("1");
        piso.setName("piso");
        piso.setHorizontalAlignment(SwingConstants.LEFT);
        piso.setFont(new Font("Arial", Font.BOLD, 18));
        piso.setBounds(276, 32, 127, 41);
        contentPane.add(piso);
       
        direccion = new JLabel("PISO ACTUAL");
        direccion.setName("direccion");
        direccion.setHorizontalAlignment(SwingConstants.LEFT);
        direccion.setFont(new Font("Arial", Font.BOLD, 18));
        direccion.setBounds(276, 84, 127, 41);
        contentPane.add(direccion);
       
        JPanel panel = new JPanel();
        panel.setBackground(Color.GREEN);
        panel.setBounds(32, 263, 66, 66);
        contentPane.add(panel);
        panel.setLayout(null);
       
        btn1 = new JButton("1");
        btn1.setContentAreaFilled(false);
        btn1.setBounds(0, 0, 66, 66);
        panel.add(btn1);
        btn1.setSelected(true);
        btn1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btn1.setForeground(Color.RED);
        btn1.setFont(new Font("Arial", Font.BOLD, 20));
        btn1.setName("btn1");
        btn1.addActionListener(this);
       
        JPanel panel_1 = new JPanel();
        panel_1.setBackground(Color.GREEN);
        panel_1.setBounds(32, 186, 66, 66);
        contentPane.add(panel_1);
        panel_1.setLayout(null);
       
        btn2 = new JButton("2");
        btn2.setOpaque(false);
        btn2.setBounds(0, 0, 66, 66);
        panel_1.add(btn2);
        btn2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btn2.setFont(new Font("Arial", Font.BOLD, 20));
        btn2.setName("btn2");
        btn2.addActionListener(this);
       
        JPanel panel_2 = new JPanel();
        panel_2.setBackground(Color.GREEN);
        panel_2.setBounds(32, 109, 66, 66);
        contentPane.add(panel_2);
        panel_2.setLayout(null);
       
        btn3 = new JButton("3");
        btn3.setOpaque(false);
        btn3.setBounds(0, 0, 66, 66);
        panel_2.add(btn3);
        btn3.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btn3.setFont(new Font("Arial", Font.BOLD, 20));
        btn3.setName("btn3");
        btn3.addActionListener(this);
       
        JPanel panel_3 = new JPanel();
        panel_3.setBackground(Color.GREEN);
        panel_3.setBounds(32, 32, 66, 66);
        contentPane.add(panel_3);
        panel_3.setLayout(null);
       
        btn4 = new JButton("4");
        btn4.setOpaque(false);
        btn4.setBounds(0, 0, 66, 66);
        panel_3.add(btn4);
        btn4.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btn4.setFont(new Font("Arial", Font.BOLD, 20));
        btn4.setName("btn4");
        btn4.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent ev) {
        if (ev.getSource() instanceof JButton){
            switch (((JButton) ev.getSource()).getName()){
            case "btn1":
                irAlPiso(1);
                break;
            case "btn2":
                irAlPiso(2);
                break;
            case "btn3":
                irAlPiso(3);
                break;
            case "btn4":
                irAlPiso(4);
                break;
            }
        }
    }
   
    private void activarBoton(int piso){
        switch (piso){
        case 1:
            btn1.setContentAreaFilled(false);
            btn1.setSelected(true);
            btn1.setForeground(Color.RED);
            btn2.setContentAreaFilled(true);
            btn2.setSelected(false);
            btn2.setForeground(Color.BLACK);
            btn3.setContentAreaFilled(true);
            btn3.setSelected(false);
            btn3.setForeground(Color.BLACK);
            btn4.setContentAreaFilled(true);
            btn4.setSelected(false);
            btn4.setForeground(Color.BLACK);
            break;
        case 2:
            btn1.setContentAreaFilled(true);
            btn1.setSelected(false);
            btn1.setForeground(Color.BLACK);
            btn2.setContentAreaFilled(false);
            btn2.setSelected(true);
            btn2.setForeground(Color.RED);
            btn3.setContentAreaFilled(true);
            btn3.setSelected(false);
            btn3.setForeground(Color.BLACK);
            btn4.setContentAreaFilled(true);
            btn4.setSelected(false);
            btn4.setForeground(Color.BLACK);
            break;
        case 3:
            btn1.setContentAreaFilled(true);
            btn1.setSelected(false);
            btn1.setForeground(Color.BLACK);
            btn2.setContentAreaFilled(true);
            btn2.setSelected(false);
            btn2.setForeground(Color.BLACK);
            btn3.setContentAreaFilled(false);
            btn3.setSelected(true);
            btn3.setForeground(Color.RED);
            btn4.setContentAreaFilled(true);
            btn4.setSelected(false);
            btn4.setForeground(Color.BLACK);
            break;
        case 4:
            btn1.setContentAreaFilled(true);
            btn1.setSelected(false);
            btn1.setForeground(Color.BLACK);
            btn2.setContentAreaFilled(true);
            btn2.setSelected(false);
            btn2.setForeground(Color.BLACK);
            btn3.setContentAreaFilled(true);
            btn3.setSelected(false);
            btn3.setForeground(Color.BLACK);
            btn4.setContentAreaFilled(false);
            btn4.setSelected(true);
            btn4.setForeground(Color.RED);
            break;
        }
    }

    private void irAlPiso(int piso){
        if (piso>pisoActual){
            this.direccion.setText("SUBE");
        }else if (piso<pisoActual){
            this.direccion.setText("BAJA");
        } else {
            this.direccion.setText("PISO ACTUAL");
        }
        this.piso.setText(String.valueOf(piso));
        pisoActual = piso;
        activarBoton(piso);
    }
}