Mega Code Archive

 
Categories / Java / Swing JFC
 

A frame with three text fields to set the background color

/*    This program is a part of the companion code for Core Java 8th ed.    (http://horstmann.com/corejava)    This program is free software: you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation, either version 3 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program.  If not, see <http://www.gnu.org/licenses/>. */ import java.awt.Color; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /**  * @version 1.40 2007-08-05  * @author Cay Horstmann  */ public class ChangeTrackingTest {    public static void main(String[] args)    {       EventQueue.invokeLater(new Runnable()          {             public void run()             {                ColorFrame frame = new ColorFrame();                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                frame.setVisible(true);             }          });    } } /**  * A frame with three text fields to set the background color.  */ class ColorFrame extends JFrame {    public ColorFrame()    {       setTitle("ChangeTrackingTest");       DocumentListener listener = new DocumentListener()          {             public void insertUpdate(DocumentEvent event)             {                setColor();             }             public void removeUpdate(DocumentEvent event)             {                setColor();             }             public void changedUpdate(DocumentEvent event)             {             }          };       panel = new JPanel();              panel.add(new JLabel("Red:"));       redField = new JTextField("255", 3);       panel.add(redField);       redField.getDocument().addDocumentListener(listener);       panel.add(new JLabel("Green:"));       greenField = new JTextField("255", 3);       panel.add(greenField);       greenField.getDocument().addDocumentListener(listener);       panel.add(new JLabel("Blue:"));       blueField = new JTextField("255", 3);       panel.add(blueField);       blueField.getDocument().addDocumentListener(listener);              add(panel);       pack();    }    /**     * Set the background color to the values stored in the text fields.     */    public void setColor()    {       try       {          int red = Integer.parseInt(redField.getText().trim());          int green = Integer.parseInt(greenField.getText().trim());          int blue = Integer.parseInt(blueField.getText().trim());          panel.setBackground(new Color(red, green, blue));       }       catch (NumberFormatException e)       {          // don't set the color if the input can't be parsed       }    }    private JPanel panel;    private JTextField redField;    private JTextField greenField;    private JTextField blueField; }