Color Slider
Download
.jar filesource code
Java Code
Main.java
package colorslider;
/**
* Main.java
* Created by Stijn Strickx on Feb. 27 2008
* Copyright 2008 Stijn Strickx, All rights reserved
*/
public class Main {
public static void main(String[] args){
new ColorWindow();
}
}
ColorWindow.java
package colorslider;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* ColorWindow.java
* Created by Stijn Strickx on Feb. 27 2008
* Copyright 2008 Stijn Strickx, All rights reserved
*/
public class ColorWindow {
ColorPanel colorSq;
private JPanel slidePanel;
public ColorWindow(){
Slider slide1 = new Slider("Red");
Slider slide2 = new Slider("Green");
Slider slide3 = new Slider("Blue");
colorSq = new ColorPanel(slide1, slide2, slide3);
slidePanel = new JPanel();
slideComplete(slide1);
slideComplete(slide2);
slideComplete(slide3);
slidePanel.setLayout(new GridLayout (0,1));
JFrame window = new JFrame("ColorPanel (c) Stijn Strickx");
Container cp = window.getContentPane();
cp.add(slidePanel);
cp.add(colorSq);
cp.setLayout(new FlowLayout());
window.pack();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
public void slideComplete(Slider slide){
slide.addChangeListener(colorSq);
slidePanel.add(slide);
}
}
Slider.java
package colorslider;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.TitledBorder;
/**
* Slider.java
* Created by Stijn Strickx on Feb. 27 2008
* Copyright 2008 Stijn Strickx, All rights reserved
*/
public class Slider extends JPanel {
private JSlider slider;
private JLabel number;
public Slider(String name){
slider = new JSlider();
number = new JLabel("" + 50/100.0 + "0");
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(5);
add(slider);
add(number);
TitledBorder border = BorderFactory.createTitledBorder(name);
setBorder(border);
}
void addChangeListener(ColorPanel colorSq) {
slider.addChangeListener(colorSq);
}
public JLabel getNumberLabel(){
return number;
}
public int getValue(){
return slider.getValue();
}
}
ColorPanel.java
package colorslider;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* ColorPanel.java
* Created by Stijn Strickx on Feb. 27 2008
* Copyright 2008 Stijn Strickx, All rights reserved
*/
class ColorPanel extends JPanel implements ChangeListener {
private Color color;
private Slider slide1;
private Slider slide2;
private Slider slide3;
private float value1;
private float value2;
private float value3;
public ColorPanel(Slider slide1, Slider slide2, Slider slide3) {
color = new Color((float)0.5,(float)0.5,(float)0.5);
setBackground(color);
setOpaque(true);
setPreferredSize(new Dimension(100,100));
this.slide1 = slide1;
this.slide2 = slide2;
this.slide3 = slide3;
}
public void stateChanged(ChangeEvent c) {
value1 = (float)slide1.getValue()/100;
value2 = (float)slide2.getValue()/100;
value3 = (float)slide3.getValue()/100;
Color color2 = new Color(value1,value2,value3);
slide1.getNumberLabel().setText(valToString(value1));
slide2.getNumberLabel().setText(valToString(value2));
slide3.getNumberLabel().setText(valToString(value3));
setBackground(color2);
}
public String valToString(float value){
if((value*100)%10 < 1){
return ("" + value + "0");
}
else{
return ("" + value);
}
}
}