📄 color_set.java
字号:
package classes;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.colorchooser.*;
public class Color_set extends JFrame implements ChangeListener,ActionListener
{
JSlider s_1,s_2,s_3;//颜色参数滚动条
JButton ok=new JButton("确定");
JButton cancel=new JButton("取消");
JLabel label_1=new JLabel(" R: 0");//显示颜色改变值
JLabel label_2=new JLabel(" G: 0");
JLabel label_3=new JLabel(" B: 0");
JTextField text=new JTextField(" 当前颜色");//当前颜色显示
Container con=this.getContentPane();//获取内容面板
JPanel p_1=new JPanel();
JPanel p_2=new JPanel();
JPanel p_3=new JPanel();
JPanel p_4=new JPanel();
JPanel p_5=new JPanel();
JPanel p_6=new JPanel();
public static Dimension VGAP5 = new Dimension(1,5);
Lsystem local_system;
int R,G,B;
int fore_OR_back_Color;//系统要改变的是前景色还是背景色(0为前景色,1为背景色)
Color_set(Lsystem system,String st,int number)
{
super(st);
local_system=system;
fore_OR_back_Color=number;
con.setLayout(new GridLayout(4,1));
p_4.setLayout(new GridLayout(2,1));
p_5.setLayout(new GridLayout(1,4));
p_6.setLayout(new GridLayout(1,5));
//如果是零则R,G,B的初始值为前景色的值
if(fore_OR_back_Color==0)
{
R=local_system.getForeColor().getRed();
G=local_system.getForeColor().getGreen();
B=local_system.getForeColor().getBlue();
}
//如果是壹则R,G,B的初始值为背景色的值
if(fore_OR_back_Color==1)
{
R=local_system.getBackColor().getRed();
G=local_system.getBackColor().getGreen();
B=local_system.getBackColor().getBlue();
}
p_1.setLayout(new BoxLayout(p_1,BoxLayout.Y_AXIS));//设置面板布局
p_1.setBorder(new TitledBorder("R"));//设置标题
s_1=new JSlider(0,255,R);//初始化滑动条,颜色值0到255
p_1.add(Box.createRigidArea(VGAP5));
p_1.add(s_1);
p_2.setLayout(new BoxLayout(p_2,BoxLayout.Y_AXIS));
p_2.setBorder(new TitledBorder("G"));
s_2=new JSlider(0,255,G);
p_2.add(Box.createRigidArea(VGAP5));
p_2.add(s_2);
p_3.setLayout(new BoxLayout(p_3,BoxLayout.Y_AXIS));
p_3.setBorder(new TitledBorder("B"));
s_3=new JSlider(0,255,B);
p_3.add(Box.createRigidArea(VGAP5));
p_3.add(s_3);
text.setBackground(new Color(R,G,B));//由文本框显示当前颜色
p_5.add(label_1);
p_5.add(label_2);
p_5.add(label_3);
p_5.add(text);
p_6.add(new Label());
p_6.add(ok);
p_6.add(new Label());
p_6.add(cancel);
p_6.add(new Label());
p_4.add(p_5);
p_4.add(p_6);
con.add(p_1);
con.add(p_2);
con.add(p_3);
con.add(p_4);
s_1.addChangeListener(this);
s_2.addChangeListener(this);
s_3.addChangeListener(this);
ok.addActionListener(this);
cancel.addActionListener(this);
addWindowListener(new WindowAdapter()//添加窗体监听(既是:窗体右上角的关闭按钮)
{
public void windowClosing(WindowEvent e)
{setVisible(false);}
});
setBackground(Color.lightGray);//设置背景色
setSize(390,300);//设置窗体尺寸
setResizable(false);//设置不可改变窗体尺寸
//获取默认显示器的尺寸
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
//设置窗体显示位置
this.setLocation((d.width-this.getSize().width)/2,(d.height-this.getSize().width)/2);
this.setVisible(true);
}
public void stateChanged(ChangeEvent ce)
{
//当滑动条有一个值改变,文本框显示当前颜色
if(ce.getSource()==s_1||ce.getSource()==s_2||ce.getSource()==s_3)
{
Color color=new Color(s_1.getValue(),s_2.getValue(),s_3.getValue());
text.setBackground(color);
}
if(ce.getSource()==s_1)
{
R=s_1.getValue();//获取颜色参数R值
label_1.setText(" R: "+s_1.getValue());//显示改变值
}
if(ce.getSource()==s_2)
{
G=s_2.getValue();//获取颜色参数G值
label_2.setText(" G: "+s_2.getValue());
}
if(ce.getSource()==s_3)
{
B=s_3.getValue();//获取颜色参数B值
label_3.setText(" B: "+s_3.getValue());
}
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==ok)
{
local_system.R=R;//将当前颜色参数值返回给系统颜色参数
local_system.G=G;
local_system.B=B;
//通过fore_OR_back_Color值调用原系统设置前景色或背景色的函数(0为前景色,1为背景色)
if(fore_OR_back_Color==0)
local_system.setForeColor();
else
local_system.setBackColor();
this.setVisible(false);//关闭颜色设置窗口
}
if(ae.getSource()==cancel)//关闭窗口,颜色不改变
{
this.setVisible(false);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -