java-RGB調(diào)色面板的實(shí)現(xiàn)(事件監(jiān)聽器之匿名內(nèi)部類)
題目要求:
要求寫一個(gè)案例,使用三個(gè)JSlider分別選取R、G、B三原色的值,用戶可以通過活動(dòng)JSlider的滑塊來動(dòng)態(tài)的合成一種顏色,合成的顏色顯示在界面上。
代碼思路解析:
1、所需要的組件
(1)JFrame窗口
(2)JLabel的RGB標(biāo)簽文字組件
(3)JTextField顏色變動(dòng)的數(shù)值
(4)JSlider顏色交換的滑塊組件
(5)JTextArea顏色顯示區(qū)域
2、構(gòu)造方法中將JFrame、JSlider、JTextField、JTextArea組件全部實(shí)例化
3、另寫一個(gè)方法將創(chuàng)建的所有的組件添加到相應(yīng)的面板中去,布局采用的是swing包中JPanel組件面板BorderLayout(東西南北中)的模式,用其中的東與中面板,其他的不寫
4、最重要的一步,我這里采用的是匿名內(nèi)部類的方法獨(dú)立寫了一個(gè)方法添加的時(shí)間監(jiān)聽器,具體寫法看代碼
5、寫一個(gè)方法將最外層的面板的尺寸,關(guān)閉窗口,還有最重要的關(guān)閉窗口setVisible(true),具體解釋如下:
setVisible(true);方法的意思是說數(shù)據(jù)模型已經(jīng)構(gòu)造好了,允許JVM可以根據(jù)數(shù)據(jù)模型執(zhí)行paint方法開始畫圖并顯示到屏幕上了,并不是顯示圖形,而是可以運(yùn)行開始畫圖了。這個(gè)方法和java多線程的start方法有點(diǎn)異曲同工之妙,start方式是允許run方法運(yùn)行了,start方法和setVisible方法很相似。
6、將寫的方法全部寫到構(gòu)造方法的末尾,記住一點(diǎn)順序最重要,順序如下:
7、將組件添加到面板才能調(diào)用時(shí)間監(jiān)聽器方法,否則后果自己看。
8、最后一步,在主方法中將所有方法都放在構(gòu)造方法進(jìn)行實(shí)例化創(chuàng)建對(duì)象即可完成
具體代碼如下:
package create;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class ZuoYe {
private JFrame jf;
private JLabel label1, label2, label3;
private JSlider slider1, slider2, slider3;
private JTextField field1, field2, field3;
private JTextArea jta;
public ZuoYe() {
jf = new JFrame();
label1 = new JLabel("R:");
label2 = new JLabel("\n G:");
label3 = new JLabel("B:");
slider1 = new JSlider(0, 255, 127);
slider2 = new JSlider(0, 255, 127);
slider3 = new JSlider(0, 255, 127);
field1 = new JTextField("127");
field2 = new JTextField("127");
field3 = new JTextField("127");
field1.setEditable(false);
field2.setEditable(false);
field3.setEditable(false);
jta = new JTextArea(5, 10);
jta.setEditable(false);
jta.setBackground(new Color(127, 127, 127));
init();
showMe();
addEventHandler();
}
public void init() {
JPanel jp1 = new JPanel();
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);
JPanel jp2 = new JPanel();
jp2.add(jta);
jf.add(jp1, BorderLayout.CENTER);
jf.add(jp2, BorderLayout.EAST);
jf.setVisible(true);
}
public void showMe() {
jf.setSize(400, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void addEventHandler() {
ChangeListener lis = new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
int r = slider1.getValue();
int g = slider2.getValue();
int b = slider3.getValue();
field1.setText(r + "");
field2.setText(g + "");
field3.setText(b + "");
Color c = new Color(r, g, b);
jta.setBackground(c);
}
};
slider1.addChangeListener(lis);
slider2.addChangeListener(lis);
slider3.addChangeListener(lis);
}
public static void main(String[] args) {
//構(gòu)造方法這樣寫調(diào)用對(duì)象,不用構(gòu)造對(duì)象去調(diào)用方法,構(gòu)造方法中末尾已經(jīng)寫過其他的方法
ZuoYe ts = new ZuoYe();
// ts.showMe();
// ts.init();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java開發(fā)gui教程之jframe監(jiān)聽窗體大小變化事件和jframe創(chuàng)建窗體
- Java添加事件監(jiān)聽的四種方法代碼實(shí)例
- JAVA用戶自定義事件監(jiān)聽實(shí)例代碼
- JavaFX 監(jiān)聽窗口關(guān)閉事件實(shí)例詳解
- Java Swing中JList選擇事件監(jiān)聽器ListSelectionListener用法示例
- java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作示例
- Java事件監(jiān)聽機(jī)制講解
- java中接口和事件監(jiān)聽器的深入理解
- Java基礎(chǔ)學(xué)習(xí)之Swing事件監(jiān)聽
- Java?Spring?事件監(jiān)聽詳情解析
相關(guān)文章
Java消息隊(duì)列JMS實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java消息隊(duì)列JMS實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
java實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天功能,使用UDP模式編寫一個(gè)聊天程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
JavaWeb連接數(shù)據(jù)庫(kù)MySQL的操作技巧
數(shù)據(jù)庫(kù)是編程中重要的一部分,它囊括了數(shù)據(jù)操作,數(shù)據(jù)持久化等各方面。在每一門編程語(yǔ)言中都占有相當(dāng)大的比例。本次,小編以MySQL為例,使用mvc編程思想,給大家講解下javaweb對(duì)數(shù)據(jù)庫(kù)的操作2017-02-02
Maven在Java8下如何忽略Javadoc的編譯錯(cuò)誤詳解
這篇文章主要給大家介紹了關(guān)于Maven在Java8下如何忽略Javadoc的編譯錯(cuò)誤的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
Spring Boot接口設(shè)計(jì)防篡改、防重放攻擊詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot接口設(shè)計(jì)防篡改、防重放攻擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
后端如何接收格式為x-www-form-urlencoded的數(shù)據(jù)
x-www-form-urlencoded格式是一種常見的HTTP請(qǐng)求數(shù)據(jù)格式,它將請(qǐng)求參數(shù)編碼為鍵值對(duì)的形式,以便于傳輸和解析,下面這篇文章主要給大家介紹了關(guān)于后端如何接收格式為x-www-form-urlencoded的數(shù)據(jù),需要的朋友可以參考下2023-05-05

