import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class SwingColorTest extends JFrame
{
JPanel swatch;
SwingColorControls RGBControls,HSBControls;
public SwingColorTest()
{
super("ColorTest");
setSize(400,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
pane.setLayout(new GridLayout(1,3,5,15));
swatch= new JPanel();
String[]label1 = {"Red","Green","Blue"};
String[]label2 = {"Hue","Saturation","Brightness"};
RGBControls= new SwingColorControls(this,label1);
HSBControls= new SwingColorControls(this,label2);
swatch.setBackground(Color.black);
pane.add(swatch);
pane.add(RGBControls);
pane.add(HSBControls);
pack();
setContentPane(pane);
setVisible(true);
}
public static void main(String[] args)
{
SwingColorTest sct= new SwingColorTest();
}
public void update(SwingColorControls control)
{
Color c;
int [] value =new int[3];
for(int i=0;i<3;i++)
{
value[i]=Integer.parseInt(control.sittingTextField[i].getText());
}
if (control==RGBControls)
{
c= new Color(value[0],value[1],value[2]);
float[] hsbValues =new float[3];
float[] HSB =Color.RGBtoHSB(value[0],value[1],value[2],hsbValues);
HSB[0]*=360;
HSB[1]*=100;
HSB[2]*=100;
for (int i=0; i<3;i++)
{
HSBControls.sittingTextField[i].setText(String.valueOf((int)HSB[i]));
}
}
else
{
c= Color.getHSBColor((float)value[0]/360,(float)value[1]/100,(float)value[2]/100);
RGBControls.sittingTextField[0].setText(String.valueOf(c.getRed()));
RGBControls.sittingTextField[1].setText(String.valueOf(c.getGreen()));
RGBControls.sittingTextField[2].setText(String.valueOf(c.getBlue()));
}
swatch.setBackground(c);
swatch.repaint();
}
}
class SwingColorControls extends JPanel implements ActionListener,FocusListener
{
SwingColorTest sct ;
JLabel[] sittingLabel = new JLabel[3];
JTextField[] sittingTextField = new JTextField[3];
public void SwingColorControls(SwingColorTest parent,String[]Label)
{
sct = parent;
setLayout(new GridLayout(3,2,5,0));
for(int i=0;i<3;i++)
{
sittingLabel[i]= new JLabel(Label[i],SwingConstants.LEFT);
sittingTextField[i]= new JTextField("0");
sittingTextField[i].addActionListener(this);
sittingTextField[i].addFocusListener(this);
add(sittingLabel[i]);
add(sittingTextField[i]);
}
show();
} public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() instanceof JTextField)
sct.update(this);
}
public void focusGained(FocusEvent fe)
{
sct.update(this);
}
public void focusLost(FocusEvent fe)
{
}
}
import java.awt.event.*;
import javax.swing.*;public class SwingColorTest extends JFrame
{
JPanel swatch;
SwingColorControls RGBControls,HSBControls;
public SwingColorTest()
{
super("ColorTest");
setSize(400,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
pane.setLayout(new GridLayout(1,3,5,15));
swatch= new JPanel();
String[]label1 = {"Red","Green","Blue"};
String[]label2 = {"Hue","Saturation","Brightness"};
RGBControls= new SwingColorControls(this,label1);
HSBControls= new SwingColorControls(this,label2);
swatch.setBackground(Color.black);
pane.add(swatch);
pane.add(RGBControls);
pane.add(HSBControls);
pack();
setContentPane(pane);
setVisible(true);
}
public static void main(String[] args)
{
SwingColorTest sct= new SwingColorTest();
}
public void update(SwingColorControls control)
{
Color c;
int [] value =new int[3];
for(int i=0;i<3;i++)
{
value[i]=Integer.parseInt(control.sittingTextField[i].getText());
}
if (control==RGBControls)
{
c= new Color(value[0],value[1],value[2]);
float[] hsbValues =new float[3];
float[] HSB =Color.RGBtoHSB(value[0],value[1],value[2],hsbValues);
HSB[0]*=360;
HSB[1]*=100;
HSB[2]*=100;
for (int i=0; i<3;i++)
{
HSBControls.sittingTextField[i].setText(String.valueOf((int)HSB[i]));
}
}
else
{
c= Color.getHSBColor((float)value[0]/360,(float)value[1]/100,(float)value[2]/100);
RGBControls.sittingTextField[0].setText(String.valueOf(c.getRed()));
RGBControls.sittingTextField[1].setText(String.valueOf(c.getGreen()));
RGBControls.sittingTextField[2].setText(String.valueOf(c.getBlue()));
}
swatch.setBackground(c);
swatch.repaint();
}
}
class SwingColorControls extends JPanel implements ActionListener,FocusListener
{
SwingColorTest sct ;
JLabel[] sittingLabel = new JLabel[3];
JTextField[] sittingTextField = new JTextField[3];
public void SwingColorControls(SwingColorTest parent,String[]Label)
{
sct = parent;
setLayout(new GridLayout(3,2,5,0));
for(int i=0;i<3;i++)
{
sittingLabel[i]= new JLabel(Label[i],SwingConstants.LEFT);
sittingTextField[i]= new JTextField("0");
sittingTextField[i].addActionListener(this);
sittingTextField[i].addFocusListener(this);
add(sittingLabel[i]);
add(sittingTextField[i]);
}
show();
} public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() instanceof JTextField)
sct.update(this);
}
public void focusGained(FocusEvent fe)
{
sct.update(this);
}
public void focusLost(FocusEvent fe)
{
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货