用java SWT制作的一个模仿微软的计算器,1000行代码!

这是一个使用Java SWT库创建的仿微软计算器程序,包含1000行代码。程序实现了基本的数学运算功能,如加减乘除、平方根、平方、倒数等,还提供了清除、回退等操作。用户界面布局模仿了微软计算器的样式,包括按钮布局和字体设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package Calculator;

import java.text.DecimalFormat;

/* 
 本作品由西南大学荣昌校区09计科2班       杨晓骏    制作    
 */

public class Calculator extends SelectionAdapter implements VerifyListener{

	protected Shell shell;
	private Text text;
	private final FormToolkit formToolkit = new FormToolkit(
			Display.getDefault());
	private Composite composite;
	private Composite composite_1;
	private Button btnNewButton;
	private Button btnNewButton_1;
	private Button btnNewButton_2;
	private Button btnNewButton_3;
	private Button Number_1;
	private Button Number_2;
	private Button Number_3;
	private Button btnNewButton_7;
	private Button Number_4;
	private Button Number_5;
	private Button Number_6;
	private Button btnNewButton_11;
	private Button Number_7;
	private Button Number_8;
	private Button Number_9;
	private Button btnNewButton_15;
	private Button Number_0;
	private Button btnNewButton_17;
	private Button btnNewButton_18;
	private Button btnNewButton_19;
	private Button btnNewButton_20;
	private Button btnNewButton_21;
	private Button btnNewButton_22;
	private Button btnNewButton_23;
	private Button btnNewButton_24;
	private Button btnNewButton_25;
	private Button btnNewButton_26;

	private DecimalFormat df;
	private boolean click_Flag = true;
	boolean isContinue = false;
	private double memory_Data;
	private double middle, result;
	private short key = -1, prekey = -1;
	private boolean isInclude, isInputNumber = false;
	private Text text_1;
	private Text text_2;

	private Menu menu;
	private MenuItem mntmNewSubmenu;
	private Menu menu_1;
	private MenuItem mntmNewItem;
	private String s;

	/**
	 * Launch the application.
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			new Calculator();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public Calculator() {

		Display display = Display.getDefault(); // 构造界面

		shell = new Shell(SWT.CLOSE | SWT.MIN);
		shell.setImage(SWTResourceManager.getImage(Calculator.class,
				"/org/eclipse/jface/dialogs/images/help.gif"));
		shell.setAlpha(255);
		shell.setSize(396, 755);
		shell.setText("\u5C0F\u7070\u72FC\u8BA1\u7B97\u5668");
		shell.setLayout(new FormLayout());

		composite = new Composite(shell, SWT.NONE);
		composite.setLayout(new FormLayout());
		FormData fd_composite = new FormData();
		fd_composite.top = new FormAttachment(0);
		fd_composite.left = new FormAttachment(0);
		fd_composite.right = new FormAttachment(100);
		composite.setLayoutData(fd_composite);

		composite_1 = new Composite(shell, SWT.NONE);
		fd_composite.bottom = new FormAttachment(100, -469);
		FormData fd_composite_1 = new FormData();
		fd_composite_1.top = new FormAttachment(composite, 6);
		fd_composite_1.bottom = new FormAttachment(100, -10);
		fd_composite_1.left = new FormAttachment(0);
		fd_composite_1.right = new FormAttachment(100);

		text = new Text(composite, SWT.BORDER | SWT.RIGHT);
		text.setText("0");
		text.setEditable(false);
		text.addVerifyListener(this);
		text.setFont(SWTResourceManager.getFont("微软雅黑", 48, SWT.BOLD));
		text.setTextLimit(15);
		text.setBackground(SWTResourceManager.getColor(255, 255, 204));
		FormData fd_text = new FormData();
		fd_text.bottom = new FormAttachment(0, 86);
		fd_text.top = new FormAttachment(0);
		fd_text.left = new FormAttachment(0);
		fd_text.right = new FormAttachment(100);
		text.setLayoutData(fd_text);

		btnNewButton = new Button(composite, SWT.NONE);
		btnNewButton.addSelectionListener(this);
		btnNewButton.setFont(SWTResourceManager.getFont("微软雅黑", 48, SWT.BOLD));
		btnNewButton.setText("\u2192");
		FormData fd_btnNewButton = new FormData();
		btnNewButton.setLayoutData(fd_btnNewButton);
		formToolkit.adapt(btnNewButton, true, true);

		btnNewButton_1 = new Button(composite, SWT.NONE);
		fd_btnNewButton.right = new FormAttachment(btnNewButton_1, -6);
		btnNewButton_1.addSelectionListener(this);
		btnNewButton_1
				.setFont(SWTResourceManager.getFont("微软雅黑", 28, SWT.BOLD));
		FormData fd_btnNewButton_1 = new FormData();
		fd_btnNewButton_1.left = new FormAttachment(0, 232);
		btnNewButton_1.setLayoutData(fd_btnNewButton_1);
		formToolkit.adapt(btnNewButton_1, true, true);
		btnNewButton_1.setText("CE");

		btnNewButton_2 = new Button(composite, SWT.NONE);
		fd_btnNewButton_1.right = new FormAttachment(100, -85);
		btnNewButton_2.addSelectionListener(this);
		btnNewButton_2
				.setFont(SWTResourceManager.getFont("微软雅黑", 28, SWT.BOLD));
		FormData fd_btnNewButton_2 = new FormData();
		fd_btnNewButton_2.left = new FormAttachment(btnNewButton_1, 6);
		fd_btnNewButton_2.right = new FormAttachment(100, -6);
		btnNewButton_2.setLayoutData(fd_btnNewButton_2);
		formToolkit.adapt(btnNewButton_2, true, true);
		btnNewButton_2.setText("C");

		text_1 = new Text(composite, SWT.BORDER | SWT.CENTER);
		fd_btnNewButton_2.bottom = new FormAttachment(text_1, 70, SWT.BOTTOM);
		fd_btnNewButton_1.bottom = new FormAttachment(text_1, 70, SWT.BOTTOM);
		fd_btnNewButton_2.top = new FormAttachment(text_1, 6);
		fd_btnNewButton_1.top = new FormAttachment(text_1, 6);
		fd_btnNewButton.bottom = new FormAttachment(text_1, 70, SWT.BOTTOM);
		fd_btnNewButton.top = new FormAttachment(text_1, 6);

		text.setTextLimit(15);
		text_1.setFont(SWTResourceManager.getFont("微软雅黑", 30, SWT.NORMAL));
		text_1.setEditable(false);
		text_1.setText("0");
		text_1.setBackground(SWTResourceManager.getColor(255, 255, 102));
		FormData fd_text_1 = new FormData();
		fd_text_1.bottom = new FormAttachment(text, 70, SWT.BOTTOM);
		fd_text_1.top = new FormAttachment(text, 6);
		fd_text_1.left = new FormAttachment(0);
		fd_text_1.right = new FormAttachment(100);
		text_1.setLayoutData(fd_text_1);
		formToolkit.adapt(text_1, true, true);

		text_2 = new Text(composite, SWT.BORDER | SWT.CENTER);
		fd_btnNewButton.left = new FormAttachment(text_2, 6);
		text_2.setEditable(false);
		text_2.setFont(SWTResourceManager.getFont("微软雅黑", 35, SWT.NORMAL));
		FormData fd_text_2 = new FormData();
		fd_text_2.bottom = new FormAttachment(text_1, 70, SWT.BOTTOM);
		fd_text
以下是一个简单的SWT应用程序窗口计算器Java代码: ```java import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class Calculator { private Shell shell; private Text displayText; public Calculator(Display display) { shell = new Shell(display); shell.setText("Calculator"); shell.setLayout(new GridLayout(4, true)); // 创建显示文本区域 displayText = new Text(shell, SWT.RIGHT); GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false, 4, 1); displayText.setLayoutData(gridData); // 创建数字和运算符按钮 Button button0 = new Button(shell, SWT.PUSH); button0.setText("0"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button0.setLayoutData(gridData); Button button1 = new Button(shell, SWT.PUSH); button1.setText("1"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button1.setLayoutData(gridData); Button button2 = new Button(shell, SWT.PUSH); button2.setText("2"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button2.setLayoutData(gridData); Button button3 = new Button(shell, SWT.PUSH); button3.setText("3"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button3.setLayoutData(gridData); Button button4 = new Button(shell, SWT.PUSH); button4.setText("4"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button4.setLayoutData(gridData); Button button5 = new Button(shell, SWT.PUSH); button5.setText("5"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button5.setLayoutData(gridData); Button button6 = new Button(shell, SWT.PUSH); button6.setText("6"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button6.setLayoutData(gridData); Button button7 = new Button(shell, SWT.PUSH); button7.setText("7"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button7.setLayoutData(gridData); Button button8 = new Button(shell, SWT.PUSH); button8.setText("8"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button8.setLayoutData(gridData); Button button9 = new Button(shell, SWT.PUSH); button9.setText("9"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); button9.setLayoutData(gridData); Button buttonPlus = new Button(shell, SWT.PUSH); buttonPlus.setText("+"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); buttonPlus.setLayoutData(gridData); Button buttonMinus = new Button(shell, SWT.PUSH); buttonMinus.setText("-"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); buttonMinus.setLayoutData(gridData); Button buttonMultiply = new Button(shell, SWT.PUSH); buttonMultiply.setText("*"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); buttonMultiply.setLayoutData(gridData); Button buttonDivide = new Button(shell, SWT.PUSH); buttonDivide.setText("/"); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); buttonDivide.setLayoutData(gridData); Button buttonEquals = new Button(shell, SWT.PUSH); buttonEquals.setText("="); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); buttonEquals.setLayoutData(gridData); // 添加按钮事件监听器 SelectionAdapter buttonListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { Button button = (Button) event.widget; String buttonText = button.getText(); String displayString = displayText.getText(); displayText.setText(displayString + buttonText); } }; button0.addSelectionListener(buttonListener); button1.addSelectionListener(buttonListener); button2.addSelectionListener(buttonListener); button3.addSelectionListener(buttonListener); button4.addSelectionListener(buttonListener); button5.addSelectionListener(buttonListener); button6.addSelectionListener(buttonListener); button7.addSelectionListener(buttonListener); button8.addSelectionListener(buttonListener); button9.addSelectionListener(buttonListener); // 添加运算符按钮事件监听器 SelectionAdapter operatorListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { Button button = (Button) event.widget; String buttonText = button.getText(); String displayString = displayText.getText(); displayText.setText(displayString + " " + buttonText + " "); } }; buttonPlus.addSelectionListener(operatorListener); buttonMinus.addSelectionListener(operatorListener); buttonMultiply.addSelectionListener(operatorListener); buttonDivide.addSelectionListener(operatorListener); // 添加等于号按钮事件监听器 buttonEquals.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String displayString = displayText.getText(); String[] tokens = displayString.split(" "); int result = Integer.parseInt(tokens[0]); for (int i = 1; i < tokens.length; i += 2) { String operator = tokens[i]; int operand = Integer.parseInt(tokens[i + 1]); if (operator.equals("+")) { result += operand; } else if (operator.equals("-")) { result -= operand; } else if (operator.equals("*")) { result *= operand; } else if (operator.equals("/")) { result /= operand; } } displayText.setText(Integer.toString(result)); } }); // 设置窗口大小和打开窗口 shell.setSize(200, 200); shell.open(); } public void run() { Display display = Display.getDefault(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } public static void main(String[] args) { Display display = new Display(); Calculator calculator = new Calculator(display); calculator.run(); } } ``` 这个窗口计算器包含数字、运算符、等于号按钮和一个文本区域来显示计算结果。每当用户点击一个数字或运算符按钮时,它们都将显示在文本区域中。当用户点击等于号按钮时,程序将从文本区域中提取出数字和运算符,计算结果并将其显示在文本区域中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值