Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/11/2008, 17:09
kaleltas
 
Fecha de Ingreso: abril-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Problema con ejercicios de interface grafica

hola a todos.. he estado leyendo el libro de como programar en java 5 edicion de deitel y deitel.. estoy en el capitulo 14... interfaces graficas de usuarios 2.. en el cual me plantean el siguiente problema:

14.12. Declare a una subclase de JPanel llamada MiSelectorDeColores que proporcione 3 objetos JSlider y 3 objetos JTextField cada objeto JSlider representa los valores de 0 a 255 para las partes rojo, azul , verde de un color. use los valores de rojo, verde y azul como argumentos para el contructor de Color, para crear un nuevo objeto Color. Muestre el valor actual de cada objeto JSlider en el objeto JTextField correspondiente. cuando el usuario cambie el valor del objeto JSlider, el objeto JTextField debera cambiar de manera acorde. Declare la clase de manera que pueda utilzarse en otras aplicaciones o subprogramas. use su nuevo componente de la GUI como parte de un subprograma que muestre el valor del actual de Color. Dibujando un rectangulo relleno.

bueno el ejercicio lo he desarrollado pero a la hora de implementar la clase.. en otra clase.. creado un objeto de esta. no me funciona, es decir. al crear la clase MiSelectorDeColores que herede de JPanel.. esta clase ahora es un JPanel (corrijanme si estoy mal) despues de esto implemento la clase.. y agrago la clase creada a un contedor que se va a mostrar en una posicion especificada.

Codigo de la clase MiSelectorDeColores

Código:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class MiSelectorDeColores extends JPanel
{
	private JSlider sliderrojo ,sliderverde , sliderazul;
	private JTextField camporojo ,campoverde , campoazul , camposalida;
	private JPanel panelrojo ,panelverde , panelazul , panelcontroles , panelresultados, paneldescripcion , panelfinal;
	private JLabel salidaetiqueta , etiquetac1 , etiquetac2 , etiquetac3;	
	private int rojo ,verde , azul;
	private Color CRojo ,CVerde , CAzul, CFinal;
	
	public MiSelectorDeColores()
	{
		panelrojo = new JPanel();
		panelrojo.setLayout(new FlowLayout());
		
		panelverde = new JPanel();
		panelverde.setLayout(new FlowLayout());
			
		panelazul = new JPanel();
		panelazul.setLayout(new FlowLayout());
		
		panelcontroles = new JPanel();
		panelcontroles.setLayout(new GridLayout(3,1));
		
		panelresultados = new JPanel();
		panelresultados.setLayout(new FlowLayout());
		
		paneldescripcion = new JPanel();
		paneldescripcion.setLayout(new GridLayout(1,3));
		
		panelfinal = new JPanel();
		panelfinal.setLayout(new BorderLayout());		
				
	    sliderrojo = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 );
		sliderrojo.setMajorTickSpacing( 10 );
		sliderrojo.setPaintTicks( true );
		
		sliderrojo.addChangeListener(

		         new ChangeListener() { 

		            public void stateChanged( ChangeEvent e )
		            {
		            	rojo = sliderrojo.getValue();
		            	CRojo = new Color(rojo, 0, 0);	            	
		            	camporojo.setBackground(CRojo);
		            	repaint();

		            }
		         }
		      );
		
		camporojo = new JTextField(1);
		camporojo.setEditable(false);
		
		panelrojo.add(sliderrojo);
		panelrojo.add(camporojo);
		
		sliderverde = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 );
		sliderverde.setMajorTickSpacing( 10 );
		sliderverde.setPaintTicks( true );
		
		sliderverde.addChangeListener(

		         new ChangeListener() { 

		            public void stateChanged( ChangeEvent e )
		            {
		            	verde = sliderverde.getValue();
		            	CVerde = new Color(0, verde, 0);	            	
		            	campoverde.setBackground(CVerde);
		            	repaint();

		            }
		         }
		      );
		
		campoverde = new JTextField(1);
		campoverde.setEditable(false);
		
		panelverde.add(sliderverde);
		panelverde.add(campoverde);
		
		
		sliderazul = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 );
		sliderazul.setMajorTickSpacing( 10 );
		sliderazul.setPaintTicks( true );
		
		sliderazul.addChangeListener(

		         new ChangeListener() { 

		            public void stateChanged( ChangeEvent e )
		            {
		            	azul = sliderazul.getValue();
		            	CAzul = new Color(0, 0, azul);	            	
		            	campoazul.setBackground(CAzul);
		            	repaint();
		            }
		         }
		      );
		
		campoazul = new JTextField(1);
		campoazul.setEditable(false);
				
		panelazul.add(sliderazul);
		panelazul.add(campoazul);
		
		camposalida = new JTextField(5);
		camposalida.setEditable(false);
		
		salidaetiqueta = new JLabel ("Resultado");
		
		etiquetac1 = new JLabel("Slider1"); 
		etiquetac1.setFont(new Font("Tahoma", Font.BOLD, 12));
		etiquetac1.setForeground(Color.RED);

		etiquetac2 = new JLabel("Slider2"); 
		etiquetac2.setFont(new Font("Tahoma", Font.BOLD, 12));	
		etiquetac2.setForeground(Color.GREEN);
		
		etiquetac3 = new JLabel("Slider3"); 
		etiquetac3.setFont(new Font("Tahoma", Font.BOLD, 12));
		etiquetac3.setForeground(Color.BLUE);
		
		
		panelresultados.add(salidaetiqueta);
		panelresultados.add(camposalida);		
		
		panelcontroles.add(panelrojo);
		panelcontroles.add(panelverde);
		panelcontroles.add(panelazul);
		
		paneldescripcion.add(etiquetac1);
		paneldescripcion.add(etiquetac2);
		paneldescripcion.add(etiquetac3);
		
		panelfinal.add(panelcontroles, BorderLayout.NORTH);
		panelfinal.add(panelresultados, BorderLayout.CENTER);
		panelfinal.add(paneldescripcion, BorderLayout.SOUTH);
		
	}
	
	public void paintComponent(Graphics g)
	{
	super.paintComponent(g);
	CFinal = new Color(rojo, verde, azul);
	camposalida.setBackground(CFinal);
	etiquetac1.setText("Valor Slider1: "+sliderrojo.getValue());
	etiquetac2.setText("Valor Slider2: "+sliderverde.getValue());
	etiquetac3.setText("Valor Slider3: "+sliderazul.getValue());	
	}
}
codigo de la implementacion de MiSelectorDeColores

Código:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;

public class ImplementacionPaleta extends JFrame
{
	private MiSelectorDeColores paleta ;


	public ImplementacionPaleta()
	{
	super ("Prueba paleta");
	
	Container Contenedor = getContentPane();
	Contenedor.setLayout( new BorderLayout() );	
	
	paleta = new MiSelectorDeColores();

	this.add(paleta,BorderLayout.NORTH);
	
	setSize( 500, 500 );
    setVisible( true );
	}

	public static void main (String args[])
	{
	ImplementacionPaleta test = new ImplementacionPaleta();
	test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}	
}
Gracias por su colaboracion