Java
Ejercicios
Ejercicios
  • 02-Estructuras de control y bucles
    • Ejercicios de estructuras de control
    • Ejercicios de estructuras de control II
  • 06-Patrones de diseño
    • Ejercicio MVC en JAVA
  • 08-Flujos y Ficheros
    • Ejercicio de Redirección y Comunicación entre Procesos en Java
    • Ejercicio de Comunicación y Sincronización entre Tres Procesos en Java
  • 08-Flujos y Ficheros
  • 10-Swing
    • Ejercicio Aplicación de Notas Simples
    • Ejercicio Cálculadora básica
    • Ejercicio: Aplicación de Lista de Tareas con layouts
    • Ejercicio: Dibujo de figuras con Graphics
    • Ejercicio: Aplicación de Control de Color de un Rectángulo
    • Ejercicio: Dibujo de una clase vista
  • 03-Arrays y colecciones
    • 03.01-Arrays
      • Sistema de Gestión de Cine
      • Ejercicios básicos de arrays
    • 03.02-Colecciones
      • Sistema de Gestión de Canales de YouTube
  • 05-POO
    • 05.1-POO Iniciación
      • Ejercicio: Sistema de Gestión para una Biblioteca
      • Ejercicio de arrays. Aventura de los Patapons
      • Ejercicios básicos sobre POO
    • 05.2-POO Clases Abstractas
      • Sistema de Gestión de Vehículos
    • 05.6-Generales de POO
      • Ejercicio: Sistema de Gestión de Empleados
      • Aventuras en el Laberinto Encantado
      • Ejercicio de Pasapalabra
  • Soluciones
    • 02-Estructuras de control y bucles
      • [Solución] Ejercicios de estructuras de control II
    • 06-Patrones de diseño
      • [Solucion] Ejercicio MVC en JAVA
    • 08-Flujos y Ficheros
      • Solución de Ejercicio de Redirección y Comunicación entre Procesos en Java
      • Solución de Ejercicio de Comunicación y Sincronización entre Tres Procesos en Java
    • 10-Swing
      • [Solución] Ejercicio Aplicación de Notas Simples
      • [Solución] Ejercicio Cálculadora Simple
      • [Solución] Ejercicio: Aplicación de Lista de Tareas con layouts
      • [Solución] Ejercicio: Dibujo de figuras con Graphics
      • [Solución] Ejercicio: Dibujo de figuras con Graphics
      • [Solución] Ejercicio: Aplicación de Control de Color de un Rectángulo
    • 03-Arrays y colecciones
      • 03.01-Arrays
        • [Solución] Ejercicios de estructuras de control 2
        • [Solución] Sistema de Gestión de Cine
        • [Solución] Ejercicios básicos de arrays
      • 03.02-Colecciones
        • [Solución] Sistema de Gestión de Canales de YouTube
    • 05-POO
      • 05.1-POO Iniciación
        • [Solución] Ejercicio de arrays. Aventura de los Patapons
        • [Solución] Ejercicios básicos sobre POO
      • 05.2-POO Clases Abstractas
        • [Solución] Sistema de Gestión de Vehículos
      • 05.6-Generales de POO
        • Solución de Sistema de Gestión de Empleados
        • [Solución] Aventuras en el Laberinto Encantado
        • [Solución] Ejercicio de Pasapalabra
Powered by GitBook
On this page
  • Clase vista: RectanguloColorVista
  • Clase controlador: RectanguloColorControlador
  1. Soluciones
  2. 10-Swing

[Solución] Ejercicio: Aplicación de Control de Color de un Rectángulo

Clase vista: RectanguloColorVista

import javax.swing.*;
import java.awt.*;

public class RectanguloColorVista extends JFrame {
    private RectanguloColorModelo modelo;
    private JSlider sliderRojo, sliderVerde, sliderAzul;
    private JTextField textoRojo, textoVerde, textoAzul;
    private JPanel rectanguloPanel;

    public RectanguloColorVista(RectanguloColorModelo modelo) {
        this.modelo = modelo;
        setTitle("Control de Color de Rectángulo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        JPanel controlesPanel = new JPanel(new GridLayout(3, 3));
        sliderRojo = new JSlider(0, 255, 0);
        sliderVerde = new JSlider(0, 255, 0);
        sliderAzul = new JSlider(0, 255, 0);
        textoRojo = new JTextField(3);
        textoVerde = new JTextField(3);
        textoAzul = new JTextField(3);

        controlesPanel.add(new JLabel("Rojo:"));
        controlesPanel.add(sliderRojo);
        controlesPanel.add(textoRojo);
        controlesPanel.add(new JLabel("Verde:"));
        controlesPanel.add(sliderVerde);
        controlesPanel.add(textoVerde);
        controlesPanel.add(new JLabel("Azul:"));
        controlesPanel.add(sliderAzul);
        controlesPanel.add(textoAzul);

        rectanguloPanel = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.setColor(model.getColor());
                g.fillRect(10, 10, getWidth() - 20, getHeight() - 20);
            }
        };

        add(controlesPanel, BorderLayout.NORTH);
        add(rectanguloPanel, BorderLayout.CENTER);

        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    // Getters para sliders y text fields
    public JSlider getsliderRojo() { return sliderRojo; }
    public JSlider getsliderVerde() { return sliderVerde; }
    public JSlider getsliderAzul() { return sliderAzul; }
    public JTextField gettextoRojo() { return textoRojo; }
    public JTextField gettextoVerde() { return textoVerde; }
    public JTextField gettextoAzul() { return textoAzul; }
    public JPanel getrectanguloPanel() { return rectanguloPanel; }
}

Clase controlador: RectanguloColorControlador

import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class RectanguloColorControlador {
    private RectanguloColorModelo model;
    private RectanguloColorVista vista;

    public RectanguloColorControlador(RectanguloColorModelo model, RectanguloColorVista vista) {
        this.model = model;
        this.vista = vista;

        // Controladores para los sliders
        ChangeListener changeListener = new ChangeListener() {
            public void stateChanged(ChangeEvent e) {

                model.setColor(vista.getSliderRed().getValue(), vista.getSliderGreen().getValue(), vista.getSliderBlue().getValue())
                vista.gettextoRojo().setText(String.valueOf(model.getRojo()));
                vista.getTextoVerde().setText(String.valueOf(model.getVerde()));
                vista.getTextoAzul().setText(String.valueOf(model.getAzul()));
                vista.getrectanguloPanel().repaint();
            }
        };

        vista.getsliderRojo().addChangeListener(changeListener);
        vista.getsliderVerde().addChangeListener(changeListener);
        vista.getsliderAzul().addChangeListener(changeListener);
    }
}
Previous[Solución] Ejercicio: Dibujo de figuras con GraphicsNext03-Arrays y colecciones

Last updated 1 year ago