java图形界面编程及计算器

import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import javax.swing.*;
public class 个人信息{
public static void main(String arg[])
{
Frame f=new Frame("个人信息");
f.setSize(250,300);
f.setLocation(300,300);
f.setBackground(Color.lightGray);
f.setLayout(new FlowLayout(2));
f.add(new JLabel("姓名:"));
f.add(new TextField("冶勇",20));
f.add(new JLabel("班级:"));
f.add(new TextField("计算机科学与技术16(D)",20));
f.add(new JLabel("学号:"));
f.add(new TextField("20163311106",20));
f.add(new JLabel("性别:"));
f.add(new TextField("男",20));
JButton button1=new JButton("OK");
JButton button2=new JButton("CLOSE");
f.add(button1);
f.add(button2);
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) { //OK按钮事件
JOptionPane.showMessageDialog(null,"你是谁,我是谁?","提示",JOptionPane.PLAIN_MESSAGE) ;
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) { //CLOSE按钮事件
long d=e.getWhen(); //事件发生的时间
Date date=new Date(d); //转换为相应的时间
System.out.println(date);
System.exit(0);
}
});
f.setVisible(true);
}
}

计算器:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Stack; //Stack是一个后进先出的堆栈

public class 计算器 extends JFrame implements ActionListener {
String []An= {"7","8","9","+","4","5","6","-",
"1","2","3","*","0",".","=","/"};
JButton b[]=new JButton[16];
JTextField jt;
String input=""; //输入的字符串
public 计算器() {
Container P=getContentPane(); //用getContentPane()方法获得JFrame的内容面板
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JButton b1=new JButton("清零");
JButton b2=new JButton("退格");
GridLayout g=new GridLayout(4,4,3,3); //4*4网格,间距3
jp1.setLayout(new BorderLayout()); //边布局
jp2.setLayout(g);
jp3.setLayout(new GridLayout(1, 2,3,3));

jt=new JTextField();
jt.setPreferredSize(new Dimension(160,30)); //文本大小
jt.setHorizontalAlignment(SwingConstants.LEFT); //左对齐
P.add(jp1,BorderLayout.NORTH); //北
jp1.add(jt,BorderLayout.WEST); //西
jp1.add(jp3,BorderLayout.EAST); //东
jp3.add(b1);
jp3.add(b2);
b1.setBackground(Color.lightGray);
b2.setBackground(Color.lightGray);
b1.addActionListener(this); //定义处理事件的方法
b2.addActionListener(this);

for(int i=0;i<16;i++) //添加按钮
{
b[i]=new JButton(An[i]);
jp2.add(b[i]);
b[i].addActionListener(this);
}
P.add(jp2,BorderLayout.CENTER);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(300, 250);
setTitle("计算器");
}
@Override
public void actionPerformed(ActionEvent e) {
int t=0;
String s=e.getActionCommand();
if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")) {
input+=" "+s+" "; //如果碰到运算符,就在运算符前后分别加一个空格
}else if(s.equals("清零")) {
input="";
}else if(s.equals("退格")) {
if((input.charAt(input.length()-1))==‘ ‘) //检测字符串的最后一个字符是否为空格
{
input=input.substring(0,input.length()-3); //如果是则删除末尾3个字符
}
else //否则删除1个字符
{
input=input.substring(0,input.length()-1);
}
}
else if(s.equals("=")) {
input=compute(input);
jt.setText(input);
input="";
t=1;
}
else
input += s;
if(t==0) {
jt.setText(input);
}
}
private String compute(String str) {
String array[];
array=str.split(" ");
Stack<Double> s=new Stack<Double>();
Double a=Double.parseDouble(array[0]);
s.push(a);
for(int i=1;i<array.length;i++) {
if(i%2==1) {
if(array[i].compareTo("+")==0)
{
double b= Double.parseDouble(array[i+1]);
s.push(b);
}
if(array[i].compareTo("-")==0)
{
double b= Double.parseDouble(array[i+1]);
s.push(-b);
}
if(array[i].compareTo("*")==0)
{
double b= Double.parseDouble(array[i+1]);
double c=s.pop();
c*=b;
s.push(c);
}
if(array[i].compareTo("/")==0)
{
double b= Double.parseDouble(array[i+1]);
double c=s.peek();
s.pop();
c/=b;
s.push(c);
}
}
}
double sum=0;
while(!s.isEmpty()) {
sum+=s.pop();
}
String result=String.valueOf(sum);
return result;
}
public static void main(String[] args) {
new 计算器();
}
}

原文地址:https://www.cnblogs.com/yy1997hs/p/9231451.html

时间: 2024-10-29 10:45:53

java图形界面编程及计算器的相关文章

多线程编程、Java I/O系统和Java图形界面编程

多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同一个进程中的所有线程都在同一内存空间工作,这些线程可以共享同一块内存和系统资源. 线程的创建: 1)通过继承Thread类来创建线程: ①创建一个继承Thread类的类: ②在创建的Thread子类中重写run()方法,在方法中写入想要线程运行的代码: ③创建Thread子类的实例: ④通过调用该实

Java图形界面编程

一:基本概念 AWT(Abstract Window Toolkit) 抽象窗口工具包,SUN 公司提供的用于图形界面编程(GUI)的类库.但是AWT得实现严重依赖于下层操作系统,所以导致组件AWT的外观取决于程序运行的平台.AWT的类和接口都定义在java.awt包中. Swing    Swing组件是实在AWT基础上开发的新型GUI组件,它是纯Java实现的轻量级(light-weight)组件,它不依赖任何特定平台,Swing组件在不同平台具有一致性的表现,但是Swing应用程序的界面外

Java图形界面编程---------使窗体加载时处于正中间

很多时候我们在创建一个Java界面应用时,我们都想如果可以在运行程序的时候初始化窗体就处于屏幕 的正中间,那该多好!接下来我将介绍两种方法实现窗体居中. 一.方法一 使用java.awt.Window中的setLocationRelativeTo(Component c);方法进行设置. setLocationRelativeTo(Component c); Sets the location of the window relative to the specified component a

Java中的图形界面编程

前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗口工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些特定功能 一个容器可以包涵多个组件,组件必须存放在容器中 3.布局管理器:实现容器的布局设置 4.图形类:包括一些基本图形 Swing是AWT的一个轻量级框架 java.lang.Object java.awt.Component java.awt.Container java.awt.Window

五,图形界面编程

五,图形界面编程 一,图形界面编程swt; 1,awt 1,图形类 Button 2,辅助类 1,工具类 2,字体类 3,颜色类 2,Swing 1,图形类 jButton 二,容器与组件 1,首层容器 Contoner 1,所有的中间容器和组件都放在首层容器里 2,常用的首层容器 JApplet-动画效果-过时 Jdiologo-弹出框 Jframe-常用的首层容器 Jwindow 3,先new jframe对象,在设置宽高 ,ste size(宽,高): 内宽高,先水平在垂直先宽后高,单位像

Java Swing界面编程(15)---JScrollPane

在一般的图形界面中,如果显示的区域不够大,往往会出现滚动条以方便用户的浏览,在Swing中JScrollPane的主要的功能就是为了显示的内容加入水平滚动条. package com.beyole.util; import java.awt.Container; import java.io.File; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.sw

GUI图形界面编程之事件处理机制

事件处理机制三要素: 事件源:能够产生事件的组件 事件:用户对组件的一个操作 事件监听器:接收事件.解释事件并处理用户交互的方法处理事件源发生的事件 事件处理机制:当组件(比如 Button)被点击时就会产生ActionEvent事件,事件被传递给一个 ActionListener 对象,再由ActionListener 定义的方法来响应处理事件(自动调用ActionEvent) 当事件发生后,将某事件的对象传递给事件监听器(事件监听器实现了发生此事件所对应的接口),事件监听器会处理此事件,为了

图形界面编程_2

上次说了,如果不添加事件,点击窗口右上方的X,窗口是不会关闭的,现在要说一下,这是在awt下Frame的情况,如果是使用swing下的JFrame,则不需要添加事件即可直接关闭按钮,awt的功能,swing基本上可以完全取代,而且用swing的组件实现的窗口外观上也比awt的组件实现的窗口要美观一些,如下图所示:            下面会主要使用swing,举一些例子 例1: import java.awt.*; import javax.swing.*; public class san

Java 图形界面开发--图文并茂建立学生管理系统

图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作. 这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统.虽然说不入大神法眼,但这确实是费了自己不少心血.对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调.在此分享出来希望对和我一样的菜鸟有帮助. 程序完整代码下载地址见: https://github.com/chaohuangtianjie994/The-Sys