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;
}
Related examples in the same category