案例介紹 歡迎來到我的小院,我是霍大俠,恭喜你今天又要進步一點點了!我們來用Java編程實戰案例,做一個動態調色板。案例界面會出現三個滑動組塊以及對應的數值,通過移動滑塊可以改變顏色區域的顯示。通過實戰我們將學會組件的使用以及新的事件介面ChangeListener。 案例演示 界面開始顯示的是調色 ...
案例介紹
歡迎來到我的小院,我是霍大俠,恭喜你今天又要進步一點點了!
我們來用Java編程實戰案例,做一個動態調色板。案例界面會出現三個滑動組塊以及對應的數值,通過移動滑塊可以改變顏色區域的顯示。通過實戰我們將學會組件的使用以及新的事件介面ChangeListener。
案例演示
界面開始顯示的是調色板的預設顏色數值,然後通過左右移動三個滑塊可以改變R、G、B的數值,進而改變顏色的顯示。
源碼學習
進入核心代碼學習,我們先來聲明案例界面的組件變數。
<!-- 有個小院-興趣編程 -->
//定義窗體
private JFrame jf;
//定義用於顯示R,G,B的組件
private JLabel label1,label2,label3;
//定義顏色值變換的滑塊組件
private JSlider slider1,slider2,slider3;
//顯示當前每個滑塊的值
private JTextField field1,field2,field3;
//顯示顏色的區域
private JTextArea jta;
然後再讓我們來看組件的初始化,這些實現可以寫在無參數的構造方法中。
//有個小院-興趣編程
public MyColorChooser() {
jf=new JFrame("動態調色板");
label1=new JLabel("R:");
label2=new JLabel("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();
addEventHandler();
}
讓我們來編寫核心的Java代碼,窗體構建完成就需要對相應的組件添加事件。本案例通過新的事件介面ChangeListener,該介面繼承於EventListener介面,為了定義一個監聽ChangeEvent對象。另外當改變滑塊的位置時,就會調用stateChanged(ChangeEvent arg0)方法,通過getValue()方法即可獲得相應的數值,進而動態的調節顏色。
//有個小院-興趣編程
private void addEventHandler() {
// TODO Auto-generated method stub
//事件介面
ChangeListener lis=new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
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);
}
你覺得動態調色板能應用到什麼地方?
全網可搜:小院里的霍大俠, 免費獲取簡單易懂的實戰編程案例。編程/就業/副業/創業/資源。
私微信:huodaxia_xfeater
二維碼: http://www.yougexiaoyuan.com/images/weixin_huodaxia.jpg
公眾號:有個小院(微信公眾號:yougexiaoyuan)
github:yougexiaoyuan (視頻源碼免費獲取)
(部分素材來源於互聯網,如有保護請聯繫作者)