js_blue = new JSlider(0,255,0); //设置蓝色滑块
jp_slide.add(radtext);
jp_slide.add(js_red);
jp_slide.add(greentext);
jp_slide.add(js_green);
jp_slide.add(bluetext);
jp_slide.add(js_blue);
在进行滑块的设置中,我们用到了JSlider控件,也就是滑块控件,在该控件后面对应的三个参数分别是滑块的最小值,滑块的最大值,滑块初始时的默认位置,如代表红色RGB值的滑块,最小值是0,最大值是255,当程序运行时滑块默认处于的位置是255。
在第二个面板中摆放显示颜色RGB值的控件
//设置显示颜色色号控件
jt_red = new JTextArea(“255”);
jt_red.setFont(font1);
jt_green = new JTextArea(“0”);
jt_green.setFont(font1);
jt_blue = new JTextArea(“0”);
jt_blue.setFont(font1);
jp_color.add(jt_red);
jp_color.add(jt_green);
jp_color.add(jt_blue);
最后进行颜色显示区域的摆放
//设置颜色显示区域
colorLB = new JTable();
colorLB.setBackground(Color.red);
add(colorLB);
现在调色器中的控件基本上都设置已经完成了,来看一波效果图:
但是现在我们拖动滑块,在颜色显示区域是没有变化的,因为我们还没有给控件添加相应的事件监听。
接下来就是我们对红、绿、蓝三种滑块的RGB值进行监听,并且在RGB值显示区域和色彩显示区域作出相应的响应。
**在这里我们需要调用ChangeListener接口,**该接口是ChangeEvent事件的监听接口,ChangeEvent事件在组件值改变的时候会触发,就比如说我们这里用到的滑块的值改变。同时,继承ChangeListener 这个接口的类(监听者)需要重写stateChanged(ChangeEvent e1) 方法,在该方法中对事件进行处理。
在该项目的stateChanged(ChangeEvent e1) 方法中,我们需要获取到三种滑块的RGB值,然后将对应的数值和颜色在窗体进行显示:
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
r = js_red.getValue(); //获取到红色滑块的RGB值
g = js_green.getValue(); //获取到绿色滑块的RGB值
b = js_blue.getValue(); //获取到蓝色滑块的RGB值
//将三种颜色的RGB值在窗体进行显示
jt_red.setText(Integer.toString®);
jt_green.setText(Integer.toString(g));
jt_blue.setText(Integer.toString(b));
//将对应的颜色进行显示
colorLB.setBackground(new Color(r, g, b));
}
同时在滑块控件上,我们也需要对三种滑块添加监听事件:
js_red.addChangeListener(this);
js_green.addChangeListener(this);
js_blue.addChangeListener(this);
现在,我们的调色器就基本已经完成了!
完整源码
====
最后附上完整源码:
package toning_device;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.event.AncestorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
//定义Toning_device类继承窗体类,并且实现接口ChangeListener 监控组件的值发生改变,如滑块的值
public class Toning_device extends JFrame implements ChangeListener{
//将控件设置为公有权限
public JSlider js_red,js_green,js_blue; //定义滑块控件
public JTable colorLB; //定义颜色显示的标签
public JTextArea jt_red, jt_green, jt_blue; //定义显示色号的控件
public int r,g,b; //定义整形数据表示红、绿、蓝色号
public static void main(String[] args) {
// TODO Auto-generated method stub
new Toning_device(); //调用该类,执行构造函数
}
public Toning_device(){
setTitle(“调色器”);
setSize(600, 300);
setLayout(new GridLayout(1,3)); //将窗体进行布局
Font font1 = new Font(“楷体”, Font.PLAIN, 20);
//设置一个面板,存放滑块
JPanel jp_slide = new JPanel(new GridLayout(3,2));
add(jp_slide);
//设置另一个面板,存放显示色号的控件
JPanel jp_color = new JPanel(new GridLayout(3,1));
add(jp_color);
//设置颜色提示标签
JLabel radtext = new JLabel(“红色”);
radtext.setFont(font1);
JLabel greentext = new JLabel(“绿色”);
greentext.setFont(font1);
JLabel bluetext = new JLabel(“蓝色”);
bluetext.setFont(font1);
js_red = new JSlider(0,255,255); //设置红色滑块
js_green = new JSlider(0,255,0); //设置绿色滑块
js_blue = new JSlider(0,255,0); //设置蓝色滑块
jp_slide.add(radtext);
jp_slide.add(js_red);
jp_slide.add(greentext);
jp_slide.add(js_green);
jp_slide.add(bluetext);
jp_slide.add(js_blue);
//设置显示颜色色号控件
jt_red = new JTextArea(“255”);
jt_red.setFont(font1);
jt_green = new JTextArea(“0”);
jt_green.setFont(font1);
jt_blue = new JTextArea(“0”);
jt_blue.setFont(font1);
jp_color.add(jt_red);
jp_color.add(jt_green);
jp_color.add(jt_blue);
//设置颜色显示区域
colorLB = new JTable();
colorLB.setBackground(Color.red);
add(colorLB);
js_red.addChangeListener(this);
js_green.addChangeListener(this);
js_blue.addChangeListener(this);
setVisible(true);
setLocationRelativeTo(null);
}
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
r = js_red.getValue(); //获取到红色滑块的RGB值
g = js_green.getValue(); //获取到绿色滑块的RGB值
b = js_blue.getValue(); //获取到蓝色滑块的RGB值
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/2edbba7e694b58a9711f121e32ba6f24.jpeg)
最后
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友
互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友
[外链图片转存中…(img-s6UUaGP7-1713526135464)]
互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
[外链图片转存中…(img-3F7verd4-1713526135464)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!