docenciait / ProgramacionDAW

0 stars 0 forks source link

Ejercicios Colecciones Deitel 16_15 #18

Open javierbarbe opened 4 years ago

javierbarbe commented 4 years ago

Buenas Ivan. Te escribo porque realizando los ejercicios de colecciones del libro de Deitel... no consigo terminar el 16_15 que trata sobre colores ... te dejo el ultimo codigo ... en las versiones previas sí conseguía pintar un string en el panel... pero ahora ha desaparecido y no se porqué... PD: Tampoco me deja insertar código git de manera legible con la opción <>

import` java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.util.HashMap;
import java.util.prefs.BackingStoreException;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Colecciones16_15colores {

    public static void main(String[] args) {
        /*
         * Use un objeto HashMap para crear una clase reutilizable y elegir uno de los
         * 13 colores predefinidos en la clase Color. Los nombres de los colores deben
         * usarse como claves, y los objetos Color predefinidos deben usarse como
         * valores. Coloque esta clase en un paquete que pueda importars e en cualquier
         * programa en Java. Use su nueva clase en una aplicación que permita al usuario
         * seleccionar un color y dibujar una figura en ese color.
         */

        Marco mimarco= new Marco();
        EligeColor elegido = new EligeColor();
    mimarco.setBackground(elegido.getElegido());
    Graphics2D gra = (Graphics2D) mimarco.getGraphics();
    gra.setColor(elegido.getElegido());
    Panel let= new Panel();
    mimarco.add(let);

            gra.drawString("Julito", 22, 10);

    }

}
`class Marco extends JFrame{
    public Marco() {
        setVisible(true);
        setBounds(55, 55, 200, 150);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//      Panel letras = new Panel();
//      add(letras);

    }
}
class EligeColor{  //clase para elegir un color del HAshMap colores
    protected Color getElegido() {
        return elegido;
    }
    private Color elegido;
    public EligeColor() {
        HashMap<String, Color> mapa= new HashMap<>();
        mapa.put("Negro", Color.BLACK);
        mapa.put("Azul", Color.BLUE);
        mapa.put("Cyan", Color.CYAN);
        mapa.put("Gris oscuro", Color.DARK_GRAY);
        mapa.put("Gris", Color.GRAY);
        mapa.put("Verde", Color.GREEN);
        mapa.put("Gris claro", Color.LIGHT_GRAY);
        mapa.put("Magenta", Color.MAGENTA);
        mapa.put("Naranja", Color.ORANGE);
        mapa.put("Rosa", Color.PINK);
        mapa.put("Rojo", Color.RED);
        mapa.put("Blanco", Color.WHITE);
        mapa.put("Amarillo", Color.YELLOW);

        String color = JOptionPane.showInputDialog("Elige un color");
         elegido =mapa.get(color) ;

    }
}
 class  Panel extends JPanel{

    protected  void paintComponent(Graphics g) {
        EligeColor micolor = new EligeColor();

        super.paintComponent(g);
        g.setColor(micolor.getElegido()); //llamo al metodo getElegido para estableccer un color
        g.drawString("HOla ", 66, 66);
    }
} 
ivanjimenez commented 4 years ago

Hola, Javier:

Para poner código en github con markdown yo te recomendaría que utilizases:

Al principio tres comas invertidas(```) seguido de la palabra java y luego finalizas con otras tres invertidas. Y te quedará mejor, como habrás visto arriba. <> es mejor sólo para líneas de código.

El ejercicio no es necesario que lo hagas con jswing (paneles gráficos) pero si quieres hacerlo no te compliques con tantas clases. Mira este ejemplo a ver si con esto te puedes organizar un poco tu código. Fíjate que aquí utilizo Graphics aunque podrías utilizar Graphics2D. Pero vamos, si quieres jugar con el swing, awt y Graphics, fantástico.

package colores;
import java.awt.Color;
import java.awt.Graphics;
import java.util.HashMap;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class EjemploColor extends JPanel {

  public void paint(Graphics g) {
    g.setColor (Color.black);
    g.drawRect (0,0,100,100);
    g.clipRect (25, 25, 50, 50);
    g.drawLine (0,100,100,0);
  }

    public static Color EligeColor() {

        Color elegido;

        HashMap<String, Color> mapa = new HashMap<>();
        mapa.put("Negro", Color.BLACK);
        mapa.put("Azul", Color.BLUE);
        mapa.put("Cyan", Color.CYAN);
        mapa.put("Gris oscuro", Color.DARK_GRAY);
        mapa.put("Gris", Color.GRAY);
        mapa.put("Verde", Color.GREEN);
        mapa.put("Gris claro", Color.LIGHT_GRAY);
        mapa.put("Magenta", Color.MAGENTA);
        mapa.put("Naranja", Color.ORANGE);
        mapa.put("Rosa", Color.PINK);
        mapa.put("Rojo", Color.RED);
        mapa.put("Blanco", Color.WHITE);
        mapa.put("Amarillo", Color.YELLOW);

        String color = JOptionPane.showInputDialog("Elige un color");

        elegido = mapa.get(color);
        return elegido;

    }

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.add(new EjemploColor());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(20,20, 500,500);
    Color c1 =  EligeColor();
    frame.setBackground(c1);

    frame.setVisible(true);
  }
}