java-RGB调色面板的实现(事件监听器之匿名内部类)
题目要求:
要求写一个案例,使用三个JSlider分别选取R、G、B三原色的值,用户可以通过活动JSlider的滑块来动态的合成一种颜色,合成的颜色显示在界面上。
代码思路解析:
1、所需要的组件
(1)JFrame窗口
(2)JLabel的RGB标签文字组件
(3)JTextField颜色变动的数值
(4)JSlider颜色交换的滑块组件
(5)JTextArea颜色显示区域
2、构造方法中将JFrame、JSlider、JTextField、JTextArea组件全部实例化
3、另写一个方法将创建的所有的组件添加到相应的面板中去,布局采用的是swing包中JPanel组件面板BorderLayout(东西南北中)的模式,用其中的东与中面板,其他的不写
4、最重要的一步,我这里采用的是匿名内部类的方法独立写了一个方法添加的时间监听器,具体写法看代码
5、写一个方法将最外层的面板的尺寸,关闭窗口,还有最重要的关闭窗口setVisible(true),具体解释如下:
setVisible(true);方法的意思是说数据模型已经构造好了,允许JVM可以根据数据模型执行paint方法开始画图并显示到屏幕上了,并不是显示图形,而是可以运行开始画图了。这个方法和java多线程的start方法有点异曲同工之妙,start方式是允许run方法运行了,start方法和setVisible方法很相似。
6、将写的方法全部写到构造方法的末尾,记住一点顺序最重要,顺序如下:
7、将组件添加到面板才能调用时间监听器方法,否则后果自己看。
8、最后一步,在主方法中将所有方法都放在构造方法进行实例化创建对象即可完成
具体代码如下:
packagecreate;
importjava.awt.BorderLayout;
importjava.awt.Color;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JSlider;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
importjavax.swing.event.ChangeEvent;
importjavax.swing.event.ChangeListener;
publicclassZuoYe{
privateJFramejf;
privateJLabellabel1,label2,label3;
privateJSliderslider1,slider2,slider3;
privateJTextFieldfield1,field2,field3;
privateJTextAreajta;
publicZuoYe(){
jf=newJFrame();
label1=newJLabel("R:");
label2=newJLabel("\nG:");
label3=newJLabel("B:");
slider1=newJSlider(0,255,127);
slider2=newJSlider(0,255,127);
slider3=newJSlider(0,255,127);
field1=newJTextField("127");
field2=newJTextField("127");
field3=newJTextField("127");
field1.setEditable(false);
field2.setEditable(false);
field3.setEditable(false);
jta=newJTextArea(5,10);
jta.setEditable(false);
jta.setBackground(newColor(127,127,127));
init();
showMe();
addEventHandler();
}
publicvoidinit(){
JPaneljp1=newJPanel();
jp1.add(label1);
jp1.add(slider1);
jp1.add(field1);
jp1.add(label2);
jp1.add(slider2);
jp1.add(field2);
jp1.add(label3);
jp1.add(slider3);
jp1.add(field3);
JPaneljp2=newJPanel();
jp2.add(jta);
jf.add(jp1,BorderLayout.CENTER);
jf.add(jp2,BorderLayout.EAST);
jf.setVisible(true);
}
publicvoidshowMe(){
jf.setSize(400,200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidaddEventHandler(){
ChangeListenerlis=newChangeListener(){
publicvoidstateChanged(ChangeEventarg0){
intr=slider1.getValue();
intg=slider2.getValue();
intb=slider3.getValue();
field1.setText(r+"");
field2.setText(g+"");
field3.setText(b+"");
Colorc=newColor(r,g,b);
jta.setBackground(c);
}
};
slider1.addChangeListener(lis);
slider2.addChangeListener(lis);
slider3.addChangeListener(lis);
}
publicstaticvoidmain(String[]args){
//构造方法这样写调用对象,不用构造对象去调用方法,构造方法中末尾已经写过其他的方法
ZuoYets=newZuoYe();
//ts.showMe();
//ts.init();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。