(Java)实验八 Java图形图像

一、实验目的

掌握Java的图形用户界面编程,掌握布局管理器和事件的响应方法。

二、实验内容

输入两个整数,分别进行加、减、乘、除等算术运算,界面如下图所示:
在这里插入图片描述
要求:
1)采用Swing组件设计图形用户界面,采用3个文本行JTextField分别表示两个操作数和运算结果,其中表示运算结果的文本行只能显示,不能输入;采用组合框JComboBox提供多种算数运算符的选择方式,组合框只能在下拉列表中选择,不能编辑。
2)文本行要响应单击事件,组合框要响应选择事件。两个事件处理方法执行由组合框指定的算术运算。
3)进行异常处理。当文本行中的字符串不能转换成整数时,弹出对话框显示指定信息,提示用户重新输入。

三、实验过程

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.Color;

public class Mathwindow {

	public JFrame frame;
	public JTextField textField;
	public JTextField textField_1;
	public JComboBox<Object> comboBox_1;
	public JLabel lblNewLabel_2;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Mathwindow window = new Mathwindow();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Mathwindow() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setTitle("\u6574\u6570\u7684\u7B97\u672F\u8FD0\u7B97");
		frame.setBounds(100, 100, 575, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		textField = new JTextField();
		textField.setFont(new Font("宋体", Font.PLAIN, 24));
		textField.setBounds(23, 85, 120, 40);
		frame.getContentPane().add(textField);
		textField.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("");
		lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 24));
		lblNewLabel_1.setBounds(380, 85, 127, 40);
		frame.getContentPane().add(lblNewLabel_1);
		
		JLabel lblNewLabel = new JLabel("=");
		lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 24));
		lblNewLabel.setBounds(358, 85, 26, 40);
		frame.getContentPane().add(lblNewLabel);
		
		textField_1 = new JTextField();
		textField_1.setFont(new Font("宋体", Font.PLAIN, 24));
		textField_1.setBounds(228, 85, 120, 40);
		frame.getContentPane().add(textField_1);
		textField_1.setColumns(10);
		
		lblNewLabel_2 = new JLabel("");
		lblNewLabel_2.setForeground(new Color(255, 0, 0));
		lblNewLabel_2.setFont(new Font("宋体", Font.PLAIN, 24));
		lblNewLabel_2.setBounds(23, 151, 266, 40);
		frame.getContentPane().add(lblNewLabel_2);
		
		String Math[]={" ","+","-","*","/"};
		comboBox_1=new JComboBox<Object>(Math);
		comboBox_1.setBackground(new Color(230, 230, 250));
		comboBox_1.setFont(new Font("宋体", Font.PLAIN, 24));
		comboBox_1.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if(e.getStateChange()==ItemEvent.SELECTED) {
					String n=(String) e.getItem();
					try {
					String s =textField.getText();
					String f =textField_1.getText();
					double x=Double.parseDouble(s);
					double y=Double.parseDouble(f);
					
					double w;
					if(n.equals("+")) {
						w=x+y;
						lblNewLabel_1.setText(""+w);
					}
					else if(n.equals("-")) {
						w=x-y;
						lblNewLabel_1.setText(""+w);
					}
					else if(n.equals("*")) {
						w=x*y;
						lblNewLabel_1.setText(""+w);
					}
					else if(n.equals("/")) {
						w=x/y;
						lblNewLabel_1.setText(""+w);
					}
					else {
						lblNewLabel_1.setText("");
					}
					}catch(Exception ex) {
						lblNewLabel_2.setText("请输入数字!!!");
					}
				}
				}
		});
		comboBox_1.setBounds(153, 85, 65, 40);
		frame.getContentPane().add(comboBox_1);
	}
}


结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值