新聞中心
Java給按鈕添加事件
贊一個, 提前學(xué)習(xí), 做好預(yù)先 , 是個好習(xí)慣.
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)浮梁免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
java圖形界面主要有AWT, SWING, SWT, JavaFx等技術(shù)
JButton ?(按鈕)是SWING里面很常用的組件. 直接添加按鈕到窗口,并不會產(chǎn)生任何交互效果.
要想產(chǎn)生交互效果,就需要了解awt,swing的事件處理機(jī)制:
事件:用戶對組件的一個操作,稱之為一個事件;
事件源:發(fā)生事件的組件就是事件源;
事件處理器:負(fù)責(zé)處理事件的方法;
比如 點(diǎn)擊按鈕,彈出HelloWord,
那么 事件是 點(diǎn)擊按鈕 ,事件源就是按鈕,事件處理器就會彈出對話框,顯示HelloWord.
常用的事件(Event) 有:
鼠標(biāo)事件(MouseEvent:?鼠標(biāo)按下,移入,移除,滾輪..)
鍵盤事件(KeyEvent:?鍵盤按下,釋放..)
動作事件(?ActionEvent:當(dāng)按鈕、菜單項(xiàng)被點(diǎn)擊,在JTextField中按Enter鍵時...觸發(fā)該事件。)
按鈕添加接收器, 不同的事件,接收器不同.
比如ActionEvent 那么他的接收器是ActionListener
KeyEvent 那么他的接收器就是KeyListener
基礎(chǔ)知識,大概就是這些.
所以想要JButton產(chǎn)生交互,你就需要給他添加事件處理器,當(dāng)發(fā)生這些事件時,出發(fā)該處理器,進(jìn)行處理.
寫2個例子,第一個簡單的:點(diǎn)擊按鈕,彈出Hello World
//導(dǎo)入3個圖形界面,常用的包
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?ButtonDemo?extends?JFrame?{
public?ButtonDemo()?{
JButton?jbHello?=?new?JButton("Hello");//按鈕
jbHello.addActionListener(new?ActionListener()?{//給按鈕添加事件接收器
@Override
public?void?actionPerformed(ActionEvent?e)?{//接受到事件后,進(jìn)行下面的處理
System.out.println("Hello?World");//?控制臺打印輸出
JOptionPane.showMessageDialog(null,?"Hello?World");//?彈出對話框,顯示Hello?World
}
});
add(jbHello);//把按鈕添加到窗體
//?窗體屬性的設(shè)置
setLayout(new?FlowLayout());//?窗體流式布局,?按添加順序從左到右排列組件
setSize(300,?200);//?寬300像素,高200
setLocationRelativeTo(null);//?窗體放在顯示器中間
setTitle("HelloWord");//?窗體的標(biāo)題
setDefaultCloseOperation(EXIT_ON_CLOSE);//?點(diǎn)擊窗體右上角的關(guān)閉按鈕時,結(jié)束程序
setVisible(true);//?窗體可見
}
public?static?void?main(String[]?args)?{
new?ButtonDemo();
}
}
看明白了吧, addActionListener是關(guān)鍵
進(jìn)階版 :加法計(jì)算器.? 代碼稍微長一點(diǎn),.但注釋很多
參考代碼如下
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
//AddFrame繼承自JFrame類,?并且實(shí)現(xiàn)了ActionListener?接口
public?class?AddFrame?extends?JFrame?implements?ActionListener?{
//?組件
JTextField?jtf1,?jtf2,?jtf3;//?文本框,用于:顯示數(shù)字
JButton?jbAdd;//?按鈕,用于:當(dāng)點(diǎn)擊按鈕時,計(jì)算出加法的結(jié)果
JButton?jbClear;//?按鈕,?用于,清空數(shù)字
public?AddFrame()?{//?構(gòu)造方法
//?初始化組件
jtf1?=?new?JTextField(5);//?長度為5的文本框
JLabel?jl?=?new?JLabel("+");//文字標(biāo)簽
jtf2?=?new?JTextField(5);
jtf3?=?new?JTextField(6);
jtf3.setEditable(false);
jbAdd?=?new?JButton("=");
jbAdd.addActionListener(this);//因?yàn)楸绢愐呀?jīng)實(shí)現(xiàn)了ActionListener接口,所以添加事件的接收器就是自己(this)
jbClear?=?new?JButton("清除");
jbClear.addActionListener(this);
//把組件,添加到窗體
add(jtf1);
add(jl);
add(jtf2);
add(jbAdd);
add(jtf3);
add(jbClear);
//?窗體屬性的設(shè)置
setLayout(new?FlowLayout());//窗體流式布局,?按添加順序從左到右排列組件
setSize(380,?100);//?寬380像素,高100
setLocationRelativeTo(null);//?窗體放在顯示器中間
setTitle("加法計(jì)算器");//?窗體的標(biāo)題
setDefaultCloseOperation(EXIT_ON_CLOSE);//?點(diǎn)擊窗體右上角的關(guān)閉按鈕時,結(jié)束程序
setVisible(true);//?窗體可見
}
/*
*??實(shí)現(xiàn)ActionListener接口?就必須重寫actionPerformed方法
*/
@Override
public?void?actionPerformed(ActionEvent?e)?{//?當(dāng)事件產(chǎn)生后,就會執(zhí)行actionPerformed里的方法
JButton?jbTemp=?(JButton)?e.getSource();//得到事件源
if(jbTemp==jbAdd)?{//如果是從jbAdd產(chǎn)生的事件.那么執(zhí)行加法操作
//因?yàn)槭呛唵伟咐?就不判斷和處理,用戶亂輸入字母漢字等情況,導(dǎo)致的異常了
int?x?=?Integer.parseInt(jtf1.getText());//從文本框1得到字符串,并轉(zhuǎn)化成數(shù)字
int?y?=?Integer.parseInt(jtf2.getText());
jtf3.setText(x+y+"");//計(jì)算2個數(shù)的和,并顯示在文本框3上
}else?if(jbTemp==jbClear)?{//如果事件源是?jbClear,那么清除文本框的文字
jtf1.setText("");
jtf2.setText("");
jtf3.setText("");
}
}
//?main方法
public?static?void?main(String[]?args)?{
new?AddFrame();//創(chuàng)建一個AddFrame的實(shí)例
}
}
求助能以按鈕事件、文本框事件的方式,以圖形用戶界面的形式顯示6位隨機(jī)數(shù)的Java源程序?
package com.xd.gui;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class RandomNum {
private JFrame frame;
private JButton btn;
private JTextArea text;
public static void main(String[] args) {
new RandomNum();
}
public RandomNum() {
init();
}
public void init() {
frame=new JFrame();
btn =new JButton();
text=new JTextArea();
//設(shè)置組件屬性
btn.setText("生成隨機(jī)數(shù)");
text.setRows(5);
text.setColumns(20);
//設(shè)置流式布局,增加組件
frame.setLayout(new FlowLayout());
frame.add(btn);
frame.add(text);
//設(shè)置窗體起始位置
frame.setBounds(600, 300, 300, 300);
//添加功能
fun ();
textFun();
//設(shè)置窗體可見
frame.setVisible(true);
}
public void fun() {
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
text.setText((int)(Math.random()*899999+100000)+"");
}
});
}
//文本框獲得焦點(diǎn)顯示6位隨機(jī)數(shù)
public void textFun() {
text.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
text.setText((int)(Math.random()*899999+100000)+"");
}
@Override
public void focusLost(FocusEvent e) {
//失去焦點(diǎn)什么都不做
}
});
}
}
java中什么是事件源,事件的處理過程是什么
在java的圖形界面開發(fā)中,要讓圖形界面接收到用戶的操作,就要給各個組件添加事件處理機(jī)制。
事件 : ?為了實(shí)現(xiàn)用戶對圖形界面組件的操作,定義了一些事件
鼠標(biāo)事件:單擊,雙擊,滾輪等....
鍵盤事件 按下鍵盤,松開按鍵等...
焦點(diǎn)事件 :焦點(diǎn)獲得 ,焦點(diǎn)失去...
窗口事件: 窗口打開,窗口關(guān)閉等....
事件源: 發(fā)聲事件的場所. 比如按鈕被點(diǎn)擊,那么事件源就是按鈕
文本框獲得焦點(diǎn). 那么事件源就是文本框
窗口被關(guān)閉,那么事件源就是窗口
事件源-----產(chǎn)生-----事件------被事件監(jiān)聽器發(fā)現(xiàn)------進(jìn)入事件處理代碼
import?java.awt.Frame;
import?java.awt.event.WindowAdapter;
import?java.awt.event.WindowEvent;
public?class?DemoAction?extends?Frame?{//窗口就是事件源
public?DemoAction()?{
this.setTitle("窗口關(guān)閉");
this.setLocation(400,?200);
this.setSize(360,?280);
//給窗口綁定一個事件監(jiān)聽器
this.addWindowListener(new?WindowAdapter()?{
@Override
public?void?windowClosing(WindowEvent?e)?{//事件WindowEvent
System.exit(0);//關(guān)閉窗口事件,?那么退出jvm
}
});
this.setVisible(true);
}
public?static?void?main(String[]?args)?{
new?DemoAction();
}
}
網(wǎng)站名稱:java按鈕事件源代碼 javaweb按鈕事件
地址分享:http://www.dlmjj.cn/article/dojpggo.html