用Eclipse计算器(java)界面,按钮监听事件如何添加?请指教!

sinat_16646529 2015-11-23 08:59:03
import java.awt.*;

public class Calculator {

/**
* @param args
*/

public static void main(String args[]) {
Frame f = new Frame("计算器");
f.setSize(600, 380);

MenuBar mb = new MenuBar();
Menu m1 = new Menu("查看 V");
Menu m2 = new Menu("编辑 E");
Menu m3 = new Menu("帮助 H");
MenuItem m01 = new MenuItem("标准型");
MenuItem m02 = new MenuItem("科学型");
MenuItem m03 = new MenuItem("程序员");
MenuItem m04 = new MenuItem("统计信息");
MenuItem m05 = new MenuItem("历史记录");
MenuItem m06 = new MenuItem("数字分组");
MenuItem m011 = new MenuItem("复制");
MenuItem m012 = new MenuItem("粘贴");
MenuItem m021 = new MenuItem("查看帮助");
MenuItem m022 = new MenuItem("关于计算器");

CheckboxMenuItem m001 = new CheckboxMenuItem("基本");
m1.add(m01);
m1.add(m02);
m1.add(m03);
m1.add(m04);
m1.add(m05);
m1.add(m06);
m1.addSeparator();
m1.add(m001);
m2.add(m011);
CheckboxMenuItem m002 = new CheckboxMenuItem("历史记录");
m2.add(m012);
m2.addSeparator();
m2.add(m002);
m3.add(m021);
m3.addSeparator();
m3.add(m022);
mb.add(m1);
mb.add(m2);
mb.add(m3);

TextField tf = new TextField("0", 25);
Panel p = new Panel();
p.setLayout(new GridLayout(4, 5));
String[] button = { " MC ", " MR ", " MS ", " M+ ", " M- ", " ← ",
" CE ", " C ", " ± ", " √ ", " 7 ", " 8 ", " 9 ", " / ", " % ",
" 4 ", " 5 ", " 6 ", " * ", "1/χ" };
for (int i = 0; i < button.length; i++) {
Button bt = new Button(button[i]);
p.add(bt);
}

Panel p1 = new Panel();
p1.setLayout(new BorderLayout());
Button b1 = new Button(" = ");
p1.add(b1, "East");

Panel p2 = new Panel();
p2.setLayout(new GridLayout(2, 2));
String[] button1 = { "3", "-", ".", "+" };
for (int i = 0; i < button1.length; i++) {
Button ft = new Button(button1[i]);
p2.add(ft);

}

Panel p3 = new Panel();
p3.setLayout(new BorderLayout());

Button t3 = new Button("0");
p3.add(t3, "South");

Panel p4 = new Panel();
p4.setLayout(new GridLayout(1, 1));
Button t1 = new Button(" 1 ");
Button t2 = new Button(" 2 ");

p4.add(t1);
p4.add(t2);

p1.add(p3, "West");
p1.add(p2, "Center");
p3.add(p4, "Center");
f.add(p1, "South");
f.add(tf, "North");
f.add(p, "Center");
f.setMenuBar(mb);
f.pack();
f.setVisible(true);

}

}

如何添加按钮监听事件?请指教!!
...全文
612 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LOOKAUST 2015-11-26
  • 打赏
  • 举报
回复
引用 3 楼 qq_30461621的回复:
[quote=引用 2 楼 沉默的拜金女的回复:]给我必须写全!
楼主这个语气好霸气啊[/quote] 按照一楼的格式,直接在Button实例化后的一句,加上一楼贴出的代码,将里面的退出语句改成相应的事件响应程序代码。
LOOKAUST 2015-11-26
  • 打赏
  • 举报
回复
引用 2 楼 沉默的拜金女的回复:
给我必须写全!
楼主这个语气好霸气啊
fat_z 2015-11-26
  • 打赏
  • 举报
回复

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class TestFrame3 extends JFrame{
	private static final  String [] b_text = {"1","2","3","4","5","6","7","8","9","0","+","-","*","/","=","C"};  
	private JTextField jf = new JTextField(16);
	public TestFrame3() {
		
		add(jf);
		for (int i = 0;i< b_text.length; i++) {
			JButton j1= new JButton(b_text[i]);
			j1.addActionListener(new BeginLisener4());
			add(j1);
		}
		
		setLayout(new FlowLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(200, 200);
		setVisible(true);
	}
	
	private class BeginLisener4 implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			
			JButton b1 = (JButton) e.getSource();
			
			
			if(b1.getText().equals("=")){
				String sv = jf.getText();
				if(sv.indexOf("+")!= -1){
					jf.setText(getResult(sv,"\\+")+"");
				}else if(sv.indexOf("-")!= -1){
					jf.setText(getResult(sv,"\\-")+"");
				}else if(sv.indexOf("*")!= -1){
					jf.setText(getResult(sv,"\\*")+"");
				}else if(sv.indexOf("/")!= -1){
					jf.setText(getResult(sv,"\\/")+"");
				}
				return;
			}
			
			if(b1.getText().equals("C")){
				jf.setText("");
				return;
			}
			String v1 = jf.getText()+b1.getText();
			jf.setText(v1);
		}
		private int getResult(String sv,String split){
			String [] sArry = sv.split(split);
			int t1 = Integer.parseInt(sArry[0]);
			int t2 = Integer.parseInt(sArry[1]);
			switch(split){
				case "\\+":
					return t1+t2;
				case "\\-":
					return t1-t2;
				case "\\*":
					return t1*t2;
				case "\\/":
					return t1/t2;
			} 
			return -1;
		}
		
	}
	
	
	
	
	public static void main(String[] args) {
		new TestFrame3();
	}
}

public class Test {
	public static void main(String[] args) {
		new TestFrame3();
	}
}

之前写过的一个简单计算机,你看着完善自己的功能。都差不多。
sinat_16646529 2015-11-23
  • 打赏
  • 举报
回复
给我必须写全!
Cx_轩 2015-11-23
  • 打赏
  • 举报
回复
Button button = new Button("关闭"); button.addActionListener(new ActionListner(){(匿名内部类,创建一个事件监听类实现其中的actionPerformed方法) public void actionPerformed(ActionEvent e) { System.exit(0); //退出 } }) 希望可以帮到你!

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧