十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
添加按钮监听。回见内容写成方法,然后调用即可。大概像下面这样
创新互联建站专注于网站建设,为客户提供网站制作、做网站、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,成都品牌网站建设,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class Test {
public static void main(String [] args){
JButton A = new JButton("A");
JButton B = new JButton("B");
JButton C = new JButton("C");
A.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
methodA();
}
});
B.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
methodB();
}
});
C.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
methodA();
methodB();
}
});
}
public static void methodA(){
//执行A方法
}
public static void methodB(){
//执行B方法
}
}
package jframe.thread;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MyJFrame extends JFrame
{
/**
*
*/
private JMenuItem jma;
private JMenuItem jmc;
private JMenuItem jmd;
private JMenuItem jme;
private JMenuItem jmf;
private JMenuItem jmg;
private JMenuItem jmh;
private JMenuBar jmb;
private JMenu jm1;
private JMenuItem jmi;
public MyJFrame()
{
jmb = new JMenuBar();
JMenu jm1 = new JMenu("个人信息查询");
jmi = new JMenuItem("按学号查询");
jma = new JMenuItem("按姓名查询");
JMenu jm2 = new JMenu("");
JMenu jm3 = new JMenu("成绩查询");
jmc = new JMenuItem("按姓名查询");
jmd = new JMenuItem("按学号查询");
jme = new JMenuItem("按学年查询");
JMenu jm4 = new JMenu("");
JMenu jm5 = new JMenu("学生寝室管理");
JMenu jm6 = new JMenu("");
JMenu jm7 = new JMenu("信息修改");
JMenuItem jml = new JMenuItem("添加信息");
JMenuItem jmj = new JMenuItem("删除信息");
JMenuItem jmk = new JMenuItem("修改信息");
JMenu jm8 = new JMenu("");
JMenu jm9 = new JMenu("修改密码");
jmf = new JMenuItem("按寝室查询");
jmg = new JMenuItem("按学号查询");
jmh = new JMenuItem("按班级查询");
jm1.add(jmi);
jm1.add(jma);
jm3.add(jmc);
jm3.add(jmd);
jm3.add(jme);
jm5.add(jmf);
jm5.add(jmg);
jm5.add(jmh);
jm7.add(jml);
jm7.add(jmj);
jm7.add(jmk);
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
jmb.add(jm4);
jmb.add(jm5);
jmb.add(jm6);
jmb.add(jm7);
jmb.add(jm8);
jmb.add(jm9);
setJMenuBar(jmb);
setBounds(20,20,1050,700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false); //窗口大小锁定,设置后,无法通过鼠标拖动,调整大小。
//如果锁定了窗口,那么最大化窗口的按钮将被自动禁用
validate(); //刷新窗口的作用(有时候会碰到窗口添加组件后,无法
//正常显示,调整窗口大小后,才能看到。这个方法避免该情况发生)
jmd.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
MyThread thread1=new MyThread();
thread1.start();//调用start()后,自动执行run()
}
});
}
class MyThread extends Thread{ //加一个线程
public void run(){
JFrame frame1 = new JFrame();
frame1.setVisible(true);
frame1.setTitle("按学号查询");
frame1.setSize(300,300);
}
}
public static void main(String args[]){
MyJFrame myframe = new MyJFrame();
myframe.setVisible(true);
myframe.setTitle("学生信息管理系统");
}
}
使用组件的paint函数用于绘图, 使用MouseListener来响应鼠标的点击
效果图
代码
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.*;
public class DemoWin extends JFrame {
public DemoWin() {
MyPanel mp = new MyPanel();
mp.addMouseListener(mp);
add(mp);
// 窗口属性设置
setTitle("Demo");// 标题
setSize(300, 280);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗口点击关闭时,退出程序
}
public static void main(String[] args) {
DemoWin win = new DemoWin(); // 创建窗口
win.setVisible(true);// 显示窗口
}
class MyPanel extends JPanel implements MouseListener {
int times;// 记录点击的次数
int x;// 记录鼠标X轴的位置
int y;// 记录鼠标Y轴的位置
@Override
public void paint(Graphics g) {
super.paint(g);
if (times == 0) {
g.setColor(Color.BLUE);// 颜色
g.fillOval(150, 150, 50, 50);// 150,150代表位置 50,50代表宽高
} else if (times == 1) {
g.setColor(Color.RED);
g.fillRect(150, 150, 50, 50);
} else {
g.setColor(Color.RED);
g.fillRect(x, y, 50, 50);
}
repaint();
}
public void mouseClicked(MouseEvent e) {
// if (e.getButton()==MouseEvent.BUTTON1) {//单击左键时有效..
// times++;// 记录点击的次数
// x = e.getX();
// y = e.getY();
// }
}
public void mousePressed(MouseEvent e) {// 鼠标按下就有效
times++;// 记录点击的次数
x = e.getX();
y = e.getY();
}
public void mouseReleased(MouseEvent e) {// 鼠标释放
}
public void mouseEntered(MouseEvent e) {// 鼠标移入
}
public void mouseExited(MouseEvent e) {// 鼠标移出
}
}
}
xml文件代码如下:
Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1" /
Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2" /
四种方法分述如下:
匿名内部类:
public class TestButtonActivity extends Activity {
Button btn1, btn2;
Toast tst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);
tst.show();
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);
tst.show();
}
});
}
}
自定义单击事件监听类:
public class TestButtonActivity extends Activity {
Button btn1, btn2;
Toast tst;
class MyClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);
tst.show();
break;
case R.id.button2:
tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);
tst.show();
break;
default:
break;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new MyClickListener());
btn2.setOnClickListener(new MyClickListener());
}
}
Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理
public class TestButtonActivity extends Activity implements OnClickListener {
Button btn1, btn2;
Toast tst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);
tst.show();
break;
case R.id.button2:
tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);
tst.show();
break;
default:
break;
}
}
}
最后一种是我今天看到的一种写法,在XML文件中逗显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法地
Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button1" /
Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button2" /
这里在输完android:的时候按下 Alt+/ 会有 onClick 属性的提示, 但输入到 android:onClick=逗 的地方按下 Alt+/ 并没有提示 onClick 选项,让我突然觉得这里好像有点问题。
public class TestButtonActivity extends Activity {
Button btn1, btn2;
Toast tst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
}
// 注意 这里没有 @Override 标签
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);
tst.show();
break;
case R.id.button2:
tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);
tst.show();
break;
default:
break;
}
}
}
这种写法整个代码中都不用声明button就可以实现button的单击事件。