用滑动条实现RGB调色板功能
package GUI;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
public class RGBPalette {
public JFrame jf;
public JPanel jp, jp_R, jp_G, jp_B, jp_Label;
public JLabel jLabel_R, jLabel_G, jLabel_B, jLabel_BG, jLabel_Rt, jLabel_Gt, jLabel_Bt;
public JSlider jSlider_R, jSlider_G, jSlider_B;
public int r, g, b;
public RGBPalette(){
jf = new JFrame("RGB调色板");
jf.setSize(300, 250);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setLocationRelativeTo(null);
jf.setResizable(false);
jp = new JPanel(new FlowLayout());
jp_R = new JPanel(new FlowLayout());
jp_G = new JPanel(new FlowLayout());
jp_B = new JPanel(new FlowLayout());
jp_Label = new JPanel(new GridLayout(1,3,5,5));
jp_R = new JPanel(new FlowLayout());
jp_G = new JPanel(new FlowLayout());
jp_B = new JPanel(new FlowLayout());
jLabel_R = new JLabel("Red~~");
jLabel_G = new JLabel("Green");
jLabel_B = new JLabel("Blue~");
jLabel_Rt = new JLabel("R: 255");
jLabel_Gt = new JLabel("G: 255");
jLabel_Bt = new JLabel("B: 255");
jLabel_BG = new JLabel("#000000");
jLabel_Rt.setFont(new Font(null, Font.PLAIN, 24));
jLabel_Gt.setFont(new Font(null, Font.PLAIN, 24));
jLabel_Bt.setFont(new Font(null, Font.PLAIN, 24));
jLabel_BG.setFont(new Font(null, Font.PLAIN, 40));
jLabel_BG.setBackground(new Color(255, 255, 255));
jLabel_BG.setOpaque(true);
jSlider_R = new JSlider(0,255,255);
jSlider_G = new JSlider(0,255,255);
jSlider_B = new JSlider(0,255,255);
RGBListener listener = new RGBListener();
jSlider_R.addChangeListener(listener);
jSlider_G.addChangeListener(listener);
jSlider_B.addChangeListener(listener);
jp_R.add(jLabel_R);
jp_R.add(jSlider_R);
jp_G.add(jLabel_G);
jp_G.add(jSlider_G);
jp_B.add(jLabel_B);
jp_B.add(jSlider_B);
jp_Label.add(jLabel_Rt);
jp_Label.add(jLabel_Gt);
jp_Label.add(jLabel_Bt);
jp.add(jp_R);
jp.add(jp_G);
jp.add(jp_B);
jp.add(jLabel_BG);
jp.add(jp_Label);
jf.setContentPane(jp);
jf.setVisible(true);
}
class RGBListener implements ChangeListener{
@Override
public void stateChanged(ChangeEvent changeEvent) {
r = jSlider_R.getValue();
g = jSlider_G.getValue();
b = jSlider_B.getValue();
jLabel_Rt.setText("R: " + r);
jLabel_Gt.setText("G: " + g);
jLabel_Bt.setText("B: " + b);
jLabel_BG.setText(convertRGBToHex(r, g, b));
jLabel_BG.setBackground(new Color(r, g, b));
jLabel_BG.setForeground(new Color(255 - r, 255 - g, 255 - b));
}
}
//**将rgb色彩值转成16进制代码**
//**来自CSDN https://blog.csdn.net/Jason763/article/details/72844092 **
public String convertRGBToHex(int r, int g, int b) {
String rFString, rSString, gFString, gSString, bFString, bSString, result;
int red, green, blue;
int r_red, r_green, r_blue;
red = r / 16;
r_red = r % 16;
if (red == 10) rFString = "A";
else if (red == 11) rFString = "B";
else if (red == 12) rFString = "C";
else if (red == 13) rFString = "D";
else if (red == 14) rFString = "E";
else if (red == 15) rFString = "F";
else rFString = String.valueOf(red);
if (r_red == 10) rSString = "A";
else if (r_red == 11) rSString = "B";
else if (r_red == 12) rSString = "C";
else if (r_red == 13) rSString = "D";
else if (r_red == 14) rSString = "E";
else if (r_red == 15) rSString = "F";
else rSString = String.valueOf(r_red);
rFString = rFString + rSString;
green = g / 16;
r_green = g % 16;
if (green == 10) gFString = "A";
else if (green == 11) gFString = "B";
else if (green == 12) gFString = "C";
else if (green == 13) gFString = "D";
else if (green == 14) gFString = "E";
else if (green == 15) gFString = "F";
else gFString = String.valueOf(green);
if (r_green == 10) gSString = "A";
else if (r_green == 11) gSString = "B";
else if (r_green == 12) gSString = "C";
else if (r_green == 13) gSString = "D";
else if (r_green == 14) gSString = "E";
else if (r_green == 15) gSString = "F";
else gSString = String.valueOf(r_green);
gFString = gFString + gSString;
blue = b / 16;
r_blue = b % 16;
if (blue == 10) bFString = "A";
else if (blue == 11) bFString = "B";
else if (blue == 12) bFString = "C";
else if (blue == 13) bFString = "D";
else if (blue == 14) bFString = "E";
else if (blue == 15) bFString = "F";
else bFString = String.valueOf(blue);
if (r_blue == 10) bSString = "A";
else if (r_blue == 11) bSString = "B";
else if (r_blue == 12) bSString = "C";
else if (r_blue == 13) bSString = "D";
else if (r_blue == 14) bSString = "E";
else if (r_blue == 15) bSString = "F";
else bSString = String.valueOf(r_blue);
bFString = bFString + bSString;
result = "#" + rFString + gFString + bFString;
return result;
}
public static void main (String[] args){
new RGBPalette();
}
}