事件处理和窗体描绘

窗体的分析

1、要有窗体类
2、要有测试类
3、示例二有事件监听类,主要是将得到的事件源对象(也就是那些组件对象)进行设置和一些修改,对他们进行一些处理。写进应有的方法中。

遇到异常:

在这里插入图片描述

示例一:

package com.vetor.lesson;

import java.awt.Frame;

import javax.swing.JFrame;
public class Demo {
	public static void main(String[] args) {
		//继承JFrame的类就变成了一个窗体
		PanelGridLayout p = new PanelGridLayout();
		p.setBounds(100, 100, 450, 260);
		p.setVisible(true);		p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
	}
}
package com.vetor.lesson;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import javax.swing.JPanel;
public class Pane extends JPanel{
	public Pane() {
	GridLayout grid = new GridLayout(6,6);  //网格布局
	setLayout(grid);
	Label label[][] = new Label[6][6]; //创建一个二维数组的标签
	//添加标签并设置颜色
	for(int i = 0; i < 6;i++)
	{
		for(int j = 0; j<6;j++)
		{
			label[i][j] = new Label();
			if((i+j)%2==0)
			{
				label[i][j].setBackground(Color.black);
			}
			else {
				label[i][j].setBackground(Color.white);
			}
			add(label[i][j]); //添加到面板里
		}
	}
	}
}

package com.vetor.lesson;

import java.awt.*;
import javax.swing.*;
public class PanelGridLayout extends JFrame {
	Container x = getContentPane();
	PanelGridLayout() {
		init();  
	}	
	void init() {
		x.setLayout(new BorderLayout()); //BorderLayout布局	
		JButton b1,b2,b3,b4;  //组件
		b1 = new JButton("北方");
		b2 = new JButton("南方");
		b3 = new JButton("西方");
		b4 = new JButton("东方"); 
		//添加组件
		x.add(b1,"North");
		x.add(b2,"South");
		x.add(b3,"West");
		x.add(b4,"East");
		
		x.add(new Pane());
		
	}

}

在这里插入图片描述

示例二:

代码如下(示例):

public class Example9_8 {
	public static void main(String[] args) {
		WindowOperation win = new WindowOperation();
		win.setBounds(100, 100, 390, 360);
		win.setTitle("简单计算器");
	}

}
package com.vetor.two;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class WindowOperation extends JFrame {

	JTextField inputNumberOne,inputNumberTwo;
	JComboBox choiceFuhao;
	JTextArea textShow;
	JButton button;
	
	
	ComputerListener computer; //监视ActionEvent事件的监视器
	
	public WindowOperation() {
		
		init();
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	void init() {
		setLayout(new FlowLayout());
		inputNumberOne = new JTextField(5);
		inputNumberTwo = new JTextField(5);
		choiceFuhao = new JComboBox();
		button = new JButton("计算");
		//
		choiceFuhao.addItem("选择运算符号:");
		String[] a = {"+","-","*","/"};
		for(int i = 0;i < a.length;i++)
		{
			choiceFuhao.addItem(a[i]);
		}
		//
		textShow = new JTextArea(9,30);
		
		computer = new ComputerListener();
		//
		computer.setJComboBox(choiceFuhao);
		computer.setWorkTogether(computer);
		computer.setJTextFieldOne(inputNumberOne);
		computer.setJTextFieldTwo(inputNumberTwo);
		computer.setJTextArea(textShow);
	    //添加监听
		button.addActionListener(computer);
		//有时,添加顺序会影响组件显示顺序的
		add(inputNumberOne);
		add(choiceFuhao);  
		add(inputNumberTwo);
		add(button);
		//添加滑动
		add(new JScrollPane());
		add(textShow);
	}
	
}
package com.vetor.two;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ComputerListener implements ActionListener {
	
	JTextField inputNumberOne,inputNumberTwo;
	JTextArea textShow;
	String fuhao;
	
	 JComboBox choice;
	 ComputerListener workTogether;
	 
	 
	 
	 public void setJComboBox(JComboBox box) {
		 choice = box;
	 }
	
	 public void setWorkTogether(ComputerListener computer) {
		 workTogether = computer;
	 }
	 
	public void setJTextFieldOne(JTextField t) {
		inputNumberOne = t;
	}
	
	public void setJTextFieldTwo(JTextField t) {
		inputNumberTwo = t;
	}
	
	public void setJTextArea(JTextArea area) {
		textShow = area;
	}
	
	public void setFuhao(String s) {
		fuhao = s;
	}

	
	public void actionPerformed(ActionEvent e) {
		try {
			 String fuhao = choice.getSelectedItem().toString();
			 workTogether.setFuhao(fuhao); 
			double number1 = Double.parseDouble(inputNumberOne.getText());
			double number2 = Double.parseDouble(inputNumberTwo.getText());
			double result = 0;
			if(fuhao.equals("+"))
			{
				result = number1+number2;
			}
			else if(fuhao.equals("-"))
			{
				result = number1 - number2;
			}
			else if(fuhao.equals("*"))
			{
				result = number1 * number2;
			}
			else if(fuhao.equals("/"))
			{
				result = number1 / number2;
			}
			textShow.append(number1+" "+fuhao+" "+number2+" = "+result+"\n");
		}catch(Exception exp) {
			textShow.append("\n请输入数字字符\n");
		}
		
	}
	
}

结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值