Java 添加按钮点击事件

我要给一组按钮添加点击事件,共一百个按钮,我要点击一个按钮的时候显示这个按钮的事件,这该怎么去写

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的单击事件。
温馨提示:内容为网友见解,仅供参考
无其他回答

ActionListener怎么用
jb.addActionListener(this); \/\/ 将按钮添加ActionListener this.setVisible(true);} 主函数中创建并显示JFrameDemo实例:java public static void main(String[] args) { new JFrameDemo();} 最后,实现ActionListener接口的actionPerformed方法,处理按钮点击事件:java public void actionPerformed(ActionEven...

fuzor触发事件按钮如何创建
创建按钮点击事件步骤:在布局中添加一个按钮,ID为button;在MainActivity.java中的头文件中添加importandroid.widget;在主类中添加按钮和其他所需类TextView textview;Button button;在onCreat中添加按钮监听函数button.setOnClickListener(newView.OnClickListener() { @Override public void onClick(View...

Java 想要设置一个按钮,还有一个文本框,按下这个按钮,文本框就会显示:1...
import java.awt.*;import java.awt.event.*;import javax.swing.*;\/\/为了响应按钮的点击事件,本窗口实现了ActionListener接口,就需要重写actionPerformed方法。public class DemoButton extends JFrame implements ActionListener{JTextField jtf;\/\/文本框int index=1;\/\/数字public DemoButton() {jtf = ...

我的java怎样给按钮添加一个当按钮被点击时窗口关闭?请举个例子。swing...
系统不关闭,只是隐藏窗体!在按钮的监听事件中获取到窗体,然后设置窗体的visible属性为false既可以 例如:public class window { public static void main(String[] arg0){ myWindow mw=new myWindow();mw.setVisible(true);} } class myWindow extends JFrame{ private JButton jb=null;public myW...

java中添加键盘事件的问题
当然是给你的按钮添加事件了伪代码:ActionListener loginAction = new ActionListener() {。。} jButton.registerKeyboardAction(loginAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);

Java Web中jsp页面的按钮点击事件求解~
1、你这个提交按钮会有一个onclick事件 \/*这个a()是指一个js事件*\/ function a(){ alert(1);\/*这里可以去处理事件*\/ } 2、你说的action=""是说form表单里面的"action"吗?比如说:这个action是指你的form表单要提交数据到指定的路径。

JAVA 设置一个按钮的组件,点击按钮后怎么退出、关闭那个窗口?关闭窗口...
直接事件里写一个this.setVisible(false); 方法就可以了

java JTable通过按钮事件动态添加数据
你可以使用卡片式布局(CardLayout),点击添加按钮后转到另一个卡片,那个卡片里面放置的是另一个JPanel,里面放数个文本框、下拉框、提交按钮之类的东西,然后点击提交后在后台将数据取得然后放入JTable再转到有JTable的卡片,就可以了。或者是直接在有表的的地方设置一个添加按钮,点击后表增加一行,然后...

编写JAVA程序,在其中有一个按钮和一个文本框。单击按钮时,文本框中显...
4、由于显示的文本内容是动态控制的,所以设置一个标识符poemsi,用来动态表示显示的诗句。5、然后,在网页中插入一个按钮。6、按钮的高度为33像素,宽度为100像素,离左侧和右侧的距离为自动,离顶部的距离为20像素。7、用type属性,定义按钮的类型为button。8、定义按钮的标签为显示,单击后执行的函数...

java设计一个简单的界面,界面里有两个按钮,而且这两个按钮点击以后有反...
import java.awt.BorderLayout;import java.awt.event.*;import javax.swing.*;public class NumFrame extends JFrame implements ActionListener {JButton jb1, jb2;int num = 50;JLabel jl;public NumFrame() {jl = new JLabel("数字:" + num, JLabel.CENTER);jb1 = new JButton("数字+...

相似回答