Java - Tarea java

 
Vista:

Tarea java

Publicado por AXEL (1 intervención) el 23/03/2022 04:46:18
Amigo, necesito su ayuda para hacer esta tarea de programación
uso neatbeans, es urgente

Usa 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 importarse 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

alguien me dice como hacerlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Tarea java

Publicado por Kabuto (1381 intervenciones) el 23/03/2022 13:57:29
La clase con el HashMap es fácil de modelar.

Es coger cada uno de los colores predefinidos en la clase Color y mapearlos usando como clave el nombre que queramos darle a cada color.

Necesitaremos un método que reciba un nombre de color y retorne el Color correspondiente.
De paso, podemos proporcionar otro método que retorne un arreglo con el listado de nombres/clave disponibles, por si queremos mostrarlos en pantalla como información extra.
También será útil, como veremos después, para inicializar un JComboBox en una GUI para que el usuario pueda elegir directamente de una lista de colores disponibles sin tener que teclear y arriesgarse a escribir mal un color

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.awt.Color;
import java.util.HashMap;
 
public class Paleta {
 
	private HashMap<Object, Color> paleta;
 
	public Paleta() {
		paleta = new HashMap<Object, Color>();
		paleta.put("negro", Color.BLACK);
		paleta.put("azul", Color.BLUE);
		paleta.put("cian", Color.CYAN);
		paleta.put("gris oscuro", Color.DARK_GRAY);
		paleta.put("gris", Color.GRAY);
		paleta.put("verde", Color.GREEN);
		paleta.put("gris claro", Color.LIGHT_GRAY);
		paleta.put("magenta", Color.MAGENTA);
		paleta.put("naranja", Color.ORANGE);
		paleta.put("rosa", Color.PINK);
		paleta.put("rojo", Color.RED);
		paleta.put("blanco", Color.WHITE);
		paleta.put("amarillo", Color.YELLOW);
	}
 
	/**
	 * Retorna un array con la lista de claves existentes.
	 */
	public Object[] listaColores() {
		return  paleta.keySet().toArray();
	}
 
	/**
	 * Retorna el Color correspondiente a la clave proporcionada
	 */
	public Color getColor(Object nomColor) {
		return paleta.get(nomColor);
	}
 
}


Vamos a darle utilidad.
Voy a crear un JFrame con dos combobox para seleccionar colores, uno para el color de fondo y otro para el color de "tinta".
En un panel dibujaremos un cuadrado y el color de fondo del panel, así como el color con el que se dibuja el cuadrado, se podrá cambiar escogiendo colores en las cajas desplegables.
imagen-2022-03-23-135256


Este es el código. Ahí vemos como declaramos como atributo de clase un objeto Paleta al que le pedimos colores cada vez que se hace alguna selección en los combobox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public class TestPaleta extends JFrame {
 
	private Paleta colores;
	private JComboBox<Object> colorTinta;
	private JComboBox<Object> colorFondo;
	private PanelLienzo lienzo;
 
	public TestPaleta() {
		colores = new Paleta();
		colorTinta = new JComboBox<Object>(colores.listaColores());
		colorTinta.setSelectedIndex(2); //comenzamos con un color de tinta distinto del fondo
		colorTinta.addItemListener(new SeleccionColor());
		colorFondo = new JComboBox<Object>(colores.listaColores());
		colorFondo.addItemListener(new SeleccionColor());
 
		JPanel pnSelectores = new JPanel();
		pnSelectores.setLayout(new GridLayout(1,2,5,5));
		pnSelectores.add(new PanelSelector("Color de Tinta:", colorTinta));
		pnSelectores.add(new PanelSelector("Color de Fondo:", colorFondo));
 
		lienzo = new PanelLienzo();
 
		setLayout(new BorderLayout());
		add(pnSelectores, BorderLayout.NORTH);
		add(lienzo, BorderLayout.CENTER);
 
		setTitle("Test Paleta");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
	//Clases panel
	private class PanelSelector extends JPanel {
 
		public PanelSelector(String texto, JComboBox<Object> caja) {
			setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
			add(new JLabel(texto));
			add(caja);
			setBorder(BorderFactory.createCompoundBorder(
					BorderFactory.createRaisedSoftBevelBorder(),
					BorderFactory.createEmptyBorder(25, 15, 25, 15)));
		}
 
	}
 
	private class PanelLienzo extends JPanel {
 
		public PanelLienzo() {
			setPreferredSize(new Dimension(300, 300));
		}
 
		@Override
		public void paint(Graphics g) {
			super.paint(g);
			this.setBackground(colores.getColor(colorFondo.getSelectedItem()));
			g.setColor(colores.getColor(colorTinta.getSelectedItem()));
			g.fill3DRect(75, 50, 200, 200, true);
		}
	}
 
	//Clases Listener
	private class SeleccionColor implements ItemListener {
 
		@Override
		public void itemStateChanged(ItemEvent e) {
			if (e.getStateChange() == ItemEvent.SELECTED)
			lienzo.repaint(); //Cuandos se seleccione un iten, repintamos lienzo
		}
 
	}
 
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new TestPaleta();
			}
		});
	}
}


Y ya está.

Esa clase Paleta se puede usar en cualquier aplicación que necesite aplicar colores. Se puede completar con más métodos si fuera necesario, yo le he puesto los mínimos pensando en el ejemplo que tenía en mente.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar