JAVA语言----GUI界面设计与事件响应

JAVA语言---GUI界面设计与事件响应---简易计算器

目录

源代码

// A code block
var foo = 'bar';
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class sole {
	public int num1 = 0,num2 = 0,result = 0;
	public String bufferString = "";
    public String operString = "";
    public JTextField text1;
    public sole(){
    	Frame myframe=new Frame("简易计算器");
		myframe.setBounds(300,100,200,200);
		myframe.setResizable(false);
		Button button0=new Button("0");
		Button button1=new Button("1");
		Button button2=new Button("2");
		Button button3=new Button("3");
		Button button4=new Button("4");
		Button button5=new Button("5");
		Button button6=new Button("6");
		Button button7=new Button("7");
		Button button8=new Button("8");
		Button button9=new Button("9");
		
		NumberAdapter numberAdapter = new NumberAdapter();
		button0.addActionListener(numberAdapter);
		button1.addActionListener(numberAdapter);
		button2.addActionListener(numberAdapter);
		button3.addActionListener(numberAdapter);
		button4.addActionListener(numberAdapter);
		button5.addActionListener(numberAdapter);
		button6.addActionListener(numberAdapter);
		button7.addActionListener(numberAdapter);
		button8.addActionListener(numberAdapter);
		button9.addActionListener(numberAdapter);
		
		Button b1=new Button("+");
		Button b2=new Button("-");
		Button b3=new Button("*");
		Button b4=new Button("/");
		Button b5=new Button("=");
		Button b6=new Button("C");
		
		OperAdapter operAdapter = new OperAdapter();
		b1.addActionListener(operAdapter);
		b2.addActionListener(operAdapter);
		b3.addActionListener(operAdapter);
		b4.addActionListener(operAdapter);
		b5.addActionListener(operAdapter);
		b6.addActionListener(new ResetAdapter());
		
		Panel panel1=new Panel();
		Panel panel2=new Panel();
		myframe.add(panel1,"South");
		myframe.add(panel2,"North");
		
		b1.setForeground(Color.red);
		b2.setForeground(Color.cyan);
		b3.setForeground(Color.orange);
		b4.setForeground(Color.magenta);
		b5.setForeground(Color.green);
		b6.setForeground(Color.blue);
		
		panel1.setLayout(new GridLayout(4,4));
		panel1.add(b1);
		panel1.add(b2);
		panel1.add(b3);
		panel1.add(b4);
		panel1.add(button0);
		panel1.add(button1);
		panel1.add(button2);
		panel1.add(button3);
		panel1.add(button4);
		panel1.add(button5);
		panel1.add(button6);
		panel1.add(button7);
		panel1.add(button8);
		panel1.add(button9);
		panel1.add(b6);
		panel1.add(b5);
		
		text1= new JTextField("0",15);
		text1.setHorizontalAlignment(JTextField.RIGHT);
		panel2.add(text1);
		myframe.setVisible(true);
    
		myframe.addWindowListener(new java.awt.event.WindowAdapter()
        {
		     public void windowClosing(java.awt.event.WindowEvent e)
			 {
				  System.exit(0);
			 }
		});
    }
	
    class NumberAdapter implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		Button button=(Button)e.getSource();
		if(bufferString.equals("0")&&button.getLabel().equals("0")) {
			bufferString+=button.getLabel();
			text1.setText(bufferString);
		}
		else {
			bufferString += button.getLabel();
			text1.setText(bufferString);
		}
	}
}

    class ResetAdapter implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		text1.setText("0");
		num1 = 0;
		num2 = 0;
		result = 0;
		bufferString = "";
		operString = "";
	}
}
    class OperAdapter implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		Button b = (Button)e.getSource();
		if(b.getLabel().equals("+")){
			operString = "+";
			num1 = Integer.parseInt(text1.getText());
			text1.setText("0");
			bufferString = "";
		} 
		else if (b.getLabel().equals("-")){
			operString = "-";
			num1 = Integer.parseInt(text1.getText());
			text1.setText("0");
			bufferString = "";
		} 
		else if(b.getLabel().equals("*")){
			operString = "*";
			num1 = Integer.parseInt(text1.getText());
			text1.setText("0");
			bufferString = "";
		} 
		else if(b.getLabel().equals("/")){
			operString = "/";
			num1 = Integer.parseInt(text1.getText());
			text1.setText("0");
			bufferString = "";
		} 
		else{
			num2 = Integer.parseInt(text1.getText());
			if(operString == "+"){
				result = num1 + num2;
			} 
			else if(operString == "-"){
				result = num1 - num2;
			} 
			else if(operString == "*"){
				result = num1 * num2;
			} 
			else if(operString == "/"){
				if(0 == num2){
					new JOptionPane();
					JOptionPane.showMessageDialog(null, "除数不能为0!");
				}
				else{
					result = num1 / num2;
				}
			}
			bufferString = Integer.toString(result);
			text1.setText(bufferString);
		}
	}
}
    public static void main(String[] args) {
		new sole();
	}
}

// An highlighted block
var foo = 'bar';

过程

(1).定义初始化一个Frame类。
(2).再定义初始化两个Panel类,并将它们通过add放入Frame框架中。
(3).然后定义初始化各组件,通过add放入Panel面板中。
(4).最后使用布局管理器来布局各组件位置。
2.
(1).编写实现加、减、乘、除运算的事件的监听器。
(2).在xxxListener类中用于处理该事件的方法中,编写处理代码。
(3).组件实例化后,注册该类事件的监听器。使用addxxxListener方法来注册监听器。

结果展示

简易计算器

感言

新手初次尝试博客,不足处见谅

猜你喜欢

转载自blog.csdn.net/qq_43715620/article/details/89817070