通过java的swing和awt来实现一个简单的调色板,调色板可以通过滑动块来调整RGB值,然后显示调整后RGB值的颜色。代码如下:
import java.awt.*;
import java.awt.event.*;
public class TestColorPalette implements AdjustmentListener{
private int r=255, g=255, b=255;
private TextField tfr;
private TextField tfg;
private TextField tfb;
private Scrollbar sbr;
private Scrollbar sbg;
private Scrollbar sbb;
private Panel display;
public static void main( String args[]) {
new TestColorPalette().init();
}
public void init(){
Frame frame = new Frame("调色板");
display = new Panel();
display.setBackground(Color.WHITE);
Panel pcolor = new Panel();
pcolor.setLayout(new BorderLayout());
Panel pw = new Panel();
pw.setLayout(new GridLayout(3,2,0,0));
tfr = new TextField("255");
tfg = new TextField("255");
tfb = new TextField("255");
tfr.setEditable(false);
tfg.setEditable(false);
tfb.setEditable(false);
sbr = new Scrollbar(Scrollbar.HORIZONTAL,255,0,0,255);
sbg = new Scrollbar(Scrollbar.HORIZONTAL,255,0,0,255);
sbb = new Scrollbar(Scrollbar.HORIZONTAL,255,0,0,255);
sbr.setName("SBR");
sbg.setName("SBG");
sbb.setName("SBB");
sbr.setBackground(Color.RED);
sbg.setBackground(Color.GREEN);
sbb.setBackground(Color.BLUE);
sbr.addAdjustmentListener(this);
sbg.addAdjustmentListener(this);
sbb.addAdjustmentListener(this);
pw.add(new Label("红色:"));
pw.add(tfr);
pw.add(new Label("绿色:"));
pw.add(tfg);
pw.add(new Label("蓝色:"));
pw.add(tfb);
Panel pc = new Panel();
pc.setLayout(new GridLayout(3,1,0,0));
pc.add(sbr);
pc.add(sbg);
pc.add(sbb);
pcolor.add(pw,"West");
pcolor.add(pc,"Center");
frame.add(display,"Center");
frame.add(pcolor,"South");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
frame.setSize(250,180);
frame.setLocation(450,200);
frame.setVisible( true);
}
public void adjustmentValueChanged(AdjustmentEvent e){
String sb_name = ((Scrollbar)e.getSource()).getName();
int value = e.getValue();
if(sb_name.equals("SBR")){
r = value;
tfr.setText(Integer.toString(r));
}else if(sb_name.equals("SBG")){
g = value;
tfg.setText(Integer.toString(g));
}else if(sb_name.equals("SBB")){
b = value;
tfb.setText(Integer.toString(b));
}
this.refresh();
}
public void refresh(){
Color c = new Color(r,g,b);
display.setBackground(c);
}
}效果图:
