I can\'t get this Java program to work: this is what it is supposed to do. Creat
ID: 3564805 • Letter: I
Question
I can't get this Java program to work: this is what it is supposed to do.
Creating a color chooser Declare a subclass of JPanel called MyColorChooser that provides three JTextField objects. Each JSlider represents the values from 0 to 255 for the red, green and blue parts of a color. Use these values as the arguments to the Color constructor to create a new Color object. Display the current value of each JSlider in the corresponding JTextField. When the user changes the value of the to JSlider, the JTextField should be changed accordingly. Use your new GUI component as part of an application that displays the current Color value by drawing a filled rectangle. Modify the MyColorChooser class to allow the user to enter an integer value into a JTextField to set the red, green or blue value. When the user presses enter in the JTextField, the corrensonding JSlider should be set to the appropriate value. Modify the application to draw the current color as a rectangle on an instance of a subclass of JPanel which provides its own paintComponent method to draw the rectangle and provides set methods to set the red, green and blue values for the current color. When any set method is invoked, the drawing panel should automatically repaint itself. Modify the application to allow the user to drag the mouse across the drawing pad ( a subclass of JPanel) to draw a shape in the current color. Enable the user to choose what shape to draw. Modify the application to provide the user with the ability to terminate the application by clicking the close box on the window that is displayed and by selecting exit from a File menu.
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
@SuppressWarnings("serial")
public class Pallette extends JApplet
implements ChangeListener {
private MyColorChooser colorChooser;
public void init()
{
colorChooser = new MyColorChooser( this );
getContentPane().add( colorChooser, BorderLayout.SOUTH );
}
public void paint( Graphics g )
{
g.setColor( colorChooser.getColor() );
g.fillRect( 50, 50, 50, 50 );
}
public void stateChanged( ChangeEvent e )
{
repaint();
}
}
@SuppressWarnings("serial")
class MyColorChooser extends JPanel
{
private JSlider redSlider, blueSlider, greenSlider;
private JTextField redDisplay, blueDisplay, greenDisplay;
private JLabel redLabel, blueLabel, greenLabel;
private Color color;
public MyColorChooser( ChangeListener parent )
{
redSlider = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 );
blueSlider = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 );
greenSlider = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 );
redDisplay = new JTextField( "0", 4 );
blueDisplay = new JTextField( "0", 4 );
greenDisplay = new JTextField( "0", 4 );
redDisplay.setEditable( false );
blueDisplay.setEditable( false );
greenDisplay.setEditable( false );
redLabel = new JLabel( "Red:" );
blueLabel = new JLabel( "Blue:" );
greenLabel = new JLabel( "Green:" );
setLayout( new GridLayout( 3, 3 ) );
add( redLabel );
add( redSlider );
add( redDisplay );
add( greenLabel );
add( greenSlider );
add( greenDisplay );
add( blueLabel );
add( blueSlider );
add( blueDisplay );
redSlider.addChangeListener( new ChangeHandler() );
greenSlider.addChangeListener( new ChangeHandler() );
blueSlider.addChangeListener( new ChangeHandler() );
redSlider.addChangeListener( parent );
greenSlider.addChangeListener( parent );
blueSlider.addChangeListener( parent );
color = Color.black;
}
public void setColor( Color c ) { color = c; }
public Color getColor() { return ( color ); }
private class ChangeHandler implements ChangeListener {
public void stateChanged( ChangeEvent e )
{
int r = redSlider.getValue();
int b = blueSlider.getValue();
int g = greenSlider.getValue();
redDisplay.setText( String.valueOf( r ) );
blueDisplay.setText( String.valueOf( b ) );
greenDisplay.setText( String.valueOf( g ) );
setColor( new Color( r, g, b ) );
repaint();
}
}
}
Explanation / Answer
// Palette.java // Program allows the user to create // a custom color. import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class Palette extends JApplet implements ChangeListener { private MyColorChooser colorChooser; public void init() { colorChooser = new MyColorChooser( this ); getContentPane().add( colorChooser, BorderLayout.SOUTH ); } public void paint( Graphics g ) { g.setColor( colorChooser.getColor() ); g.fillRect( 50, 50, 50, 50 ); } public void stateChanged( ChangeEvent e ) { repaint(); } } class MyColorChooser extends JPanel { private JSlider redSlider, blueSlider, greenSlider; private JTextField redDisplay, blueDisplay, greenDisplay; private JLabel redLabel, blueLabel, greenLabel; private Color color; public MyColorChooser( ChangeListener parent ) { redSlider = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 ); blueSlider = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 ); greenSlider = new JSlider( SwingConstants.HORIZONTAL, 0, 255, 1 ); redDisplay = new JTextField( "0", 4 ); blueDisplay = new JTextField( "0", 4 ); greenDisplay = new JTextField( "0", 4 ); redDisplay.setEditable( false ); blueDisplay.setEditable( false ); greenDisplay.setEditable( false ); redLabel = new JLabel( "Red:" ); blueLabel = new JLabel( "Blue:" ); greenLabel = new JLabel( "Green:" ); setLayout( new GridLayout( 3, 3 ) ); add( redLabel ); add( redSlider ); add( redDisplay ); add( greenLabel ); add( greenSlider ); add( greenDisplay ); add( blueLabel ); add( blueSlider ); add( blueDisplay ); redSlider.addChangeListener( new ChangeHandler() ); greenSlider.addChangeListener( new ChangeHandler() ); blueSlider.addChangeListener( new ChangeHandler() ); redSlider.addChangeListener( parent ); greenSlider.addChangeListener( parent ); blueSlider.addChangeListener( parent ); color = Color.black; } public void setColor( Color c ) { color = c; } public Color getColor() { return ( color ); } private class ChangeHandler implements ChangeListener { public void stateChanged( ChangeEvent e ) { int r = redSlider.getValue(); int b = blueSlider.getValue(); int g = greenSlider.getValue(); redDisplay.setText( String.valueOf( r ) ); blueDisplay.setText( String.valueOf( b ) ); greenDisplay.setText( String.valueOf( g ) ); setColor( new Color( r, g, b ) ); repaint(); } } }
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.