如何在Java中利用图形界面技术设计一个能够完成加、减、乘、除和取余运算的图形用户界面应用程序?
packageRational;importjava.util.StringTokenizer;/***@authorSunKun*分数四则运算*/publicclassCalculator{intnumerator;//分子intdenominator;//分母Calculator(){}Calculator(inta,intb){if(a==0){numerator=0;denominator=1;}else{setNumeratorAndDenominator(a,b);}}voidsetNumeratorAndDenominator(inta,intb){//设置分子和分母intc=f(Math.abs(a),Math.abs(b));//计算最大公约数numerator=a/c;denominator=b/c;if(numerator<0&&denominator<0){numerator=-numerator;denominator=-denominator;}}intgetNumerator(){returnnumerator;}intgetDenominator(){returndenominator;}intf(inta,intb){//求a和b的最大公约数if(a
importjava.util.Scanner;publicclass四则运算{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.print("请输入第一个数字:");inta=sc.nextInt();System.out.print("请输入运算字符:");Stringstr=sc.next();charch=str.charAt(0);System.out.print("请输入第二个数字:");intb=sc.nextInt();switch(ch){case'+':System.out.println(a+"+"+b+"="+(a+b));break;case'-':System.out.println(a+"-"+b+"="+(a-b));break;case'*':System.out.println(a+"*"+b+"="+(a*b));break;case'/':if(b==0){System.out.println("被除数为零,运算无意义!");break;}else{System.out.println(a+"/"+b+"="+(a/b));break;}default:System.out.println("运算符是无意义字符!");break;}}
package test;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Z extends JFrame implements ActionListener, FocusListener {
private String[] total = { "1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", "0", ".", "=", "/" }; // 总数组
private String[] other = { "clear", "delete" }; // 其它功能数组
private String[] symbol = { "+", "-", "*", "/" }; // 符号数组
private String multinumber = "0", operator1 = "", exists = "", operator2 = null, s = "";
// multinumber(多位数) operator1(运算符) exists(存在的)
private double d1, d2 = 0;
private int Count = 0;
JPanel jptotal = new JPanel(); // 总面板
JTextField jtexternal = new JTextField("0"); // 外部文本框
JTextField jtinside = new JTextField(); // 内部文本框
JPanel jptop1 = new JPanel(); // 顶部面板1
JPanel jptop2 = new JPanel(); // 顶部面板2
JPanel jpmiddle = new JPanel(); // 中部面板
public Z() {
jptotal.setLayout(new BorderLayout());
// 使用边界布局管理器
jptop1.setLayout(new GridLayout(2, 0));
jptop1.add(jtexternal);
jptop2.setLayout(new GridLayout(0, 2));
for (int i = 0; i < other.length; i++) {
JButton jbi = new JButton("" + other[i]);
jbi.setSize(100, 10);
jptop2.add(jbi);
jbi.addActionListener(this);
}
jpmiddle.setLayout(new GridLayout(4, 0));
for (int i = 0; i < total.length; i++) {
JButton jbi = new JButton("" + total[i]);
jpmiddle.add(jbi);
jbi.addActionListener(this);
}
jtexternal.addFocusListener(this);
jtexternal.add(jtinside);
jtinside.addFocusListener(this);
// 上面三行代码的作用是让文本框不可被选中
jptop1.add(jptop2);
jptotal.add(jptop1, "North");
// 以jp1为一个整体,让jp1里面的内容从最上面开始填充
jptotal.add(jpmiddle);
add(jptotal);
setVisible(true);
setSize(500, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
// ctrl+/ :注释
public void actionPerformed(ActionEvent e) throws ArithmeticException {
try {
String inputing = e.getActionCommand();
// 表示获取当前输入的内容
if (inputing.equals(".")) {
Count++;
}
exists = jtexternal.getText();
if (operator2 != null) {
int k = 0;
for (int i = 0; i < symbol.length; i++) {
if (operator2.equals(symbol[i])) {
k = k + 1;
}
if (inputing.equals(symbol[i])) {
k = k + 1;
}
if (k == 2) {
jtexternal.setText(exists.substring(0, exists.length() - 1) + inputing);
operator1 = inputing;
return;
}
// 实现四则运算符不可同时存在,新输入的替换旧的
if (operator2.equals(symbol[i]) && inputing.equals(".")) {
return;
}
// 实现四则运算符和点不可挨着出现(点后面可以出现四则运算符,点前面不可出现)
}
}
if (exists.equals("0")) {
if (inputing.equals(".") || (inputing.equals("+")) || (inputing.equals("-")) || (inputing.equals("*"))
|| (inputing.equals("/"))) {
jtexternal.setText("0" + inputing);
} else {
jtexternal.setText(inputing);
}
} else {
jtexternal.setText(exists + inputing);
}
// 实现如果0前面没有非0数字的话,那么无论输入多少次0,都只显示一个0,如果输入其它数字,0将会被替换
if ((d1 == 0.0 || d2 == 0.0) && inputing.equals("=") && !exists.substring(0, 1).equals("0")) {
return;
}
// 实现如果文本框内存在数字,那么输入等号,将打印其本身
if (inputing.equals("clear")) {
multinumber = "0";
exists = "";
operator1 = "";
jtexternal.setText("0");
operator2 = null;
d2 = 0;
s = "";
Count = 0;
d1 = 0.0;
// 实现,当点击clear时,文本框内将被清空至0,所有数据都将还原至初始状态
} else if (inputing.equals("delete")) {
if (exists.length() <= 1 || s.equals("=")) {
jtexternal.setText("0");
multinumber = "0";
exists = "";
operator1 = "";
operator2 = null;
d2 = 0;
s = "";
Count = 0;
d1 = 0;
// 实现,按delete删除刚输入的内容,如果将最后一个数字删除,那么效果同按clear
} else {
if (inputing.equals("+") || inputing.equals("-") || inputing.equals("*") || inputing.equals("/")) {
Count = 1;
}
jtexternal.setText(exists.substring(0, exists.length() - 1));
// 将operator2存储上一次值
operator2 = exists.substring(exists.length() - 2, exists.length() - 1);
/*
* 实现如果四则运算符后面有数字的话
* 那么如果此时按删除键
* 删除之后如果新输入的还是四则运算符话
* 那么将会将原来的四则运算符替换成新输入的
*/
}
} else if (!inputing.equals("+") && !inputing.equals("-") && !inputing.equals("*") && !inputing.equals("/")
&& !inputing.equals("=")) {
// 判断输入是否为数字
if (s.equals("=")) {
if (exists.equals("除数不能为0") || new Double(exists) == d1) {
if (inputing.equals(".")) {
jtexternal.setText("0" + inputing);
} else {
jtexternal.setText(inputing);
}
}
s = "";
}
// 实现一次计算完成之后,可以进行新的运算
if (multinumber == null) { // 多位数计算
multinumber = inputing;
} else {
multinumber += inputing;
}
d1 = new Double(multinumber);
if (operator1.equals("+")) { // 进行四则运算
if (d2 == 0) {
if (operator1.equals("*") || operator1.equals("/")) {
d2 = 1;
}
}
// 实现,当四则运算符后面没有数字时,那么输入等号后结果将为符号前面的结果,如果符号前面只有一个数字,那么将打印自身
d1 = d1 + d2;
} else if (operator1.equals("-")) {
d1 = d2 - d1;
} else if (operator1.equals("*")) {
d1 = d1 * d2;
} else if (operator1.equals("/")) {
d1 = d2 / d1;
}
// 利用临时变量f2,实现四则运算
operator2 = inputing;
} else if (!inputing.equals("=")) { // [四则运算符] 输入等号后继续进行计算
multinumber = "0";
operator1 = inputing;
d2 = d1;
operator2 = inputing;
s = "";
Count = 0;
// 实现小数运算
} else { // 就是 [=] 得出最终结果
jtexternal.setText("" + d1);
Count = 0;
s = "=";
multinumber = "0";
if (operator2.equals("0") && "/".equals(operator1)) {
operator2 = null;
d1 = 0;// 将非法运算值替换成正确值
throw new ArithmeticException();// 指定抛出异常的条件
//赋值计算不抛算数异常,如果想让其抛出,必须指定条件重新抛出异常
} else {
operator1 = inputing;
operator2 = null;
d2 = 0;
} // 计算结果
if (inputing.equals("=") && (d1 == 0.0 || d2 == 0.0)) {
return;
}
// 实现等号不可重复输入
}
} catch (ArithmeticException e1) {
jtexternal.setText("除数不能为0");
// 指定抛出异常内容
}
}
public static void main(String[] args) {
new Z();
}
public void focusGained(FocusEvent e) {
jtinside.requestFocus();
// 让焦点聚焦到内部文本框,实现外部文本框的不可聚焦功能
}
public void focusLost(FocusEvent e) {
}
}
在java中,什么是抽象类和抽象方法,创建有何作用
抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。 在抽...
java是什么?何运行java程序?
java它不是软件,这里给各位初学者们详细解释一下。简单来说java它是个面向网络的程序设计语言,用来让程序员创建应用程序,这些应用程序可以通过网络下载,而且可在任何计算平台上安全地运行。如果再加上万维网和公司内部网体系,你将会拥有一个标准的网络计算环境,Java作为一个分布式的,面向对象的程序设计...
在Java中的类是通过什么形式进行组织和管理的?
(5) 在Java中,类定义采取几乎和C++一样的形式。但没有标志结束的分号。没有class foo这种形式的类声明,只有类定义。 class aType() void aMethod() } (6) Java中没有作用域范围运算符“::”。Java利用点号做所有的事情,但可以不用考虑它,因为只能在一个类里定义元素。即使那些方法定义,也必须在一个类的...
java的作用是什么
当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折...
java中如何使用LIST的ADD方法
报的是NullPointException吧,那是因为你的A没有实例化。List a = (List)new java.util.ArrayList();a.add(obj);就行了。
如何在我的Java项目中用代码调用微软的音乐播放器和计算机!
Runtime.getRuntime().exec("C:\/Program Files\/Windows Media Player\/wmplayer.exe");Runtime.getRuntime().exec("C:\/WINDOWS\/system32\/calc.exe");2行代码里的路径 都是我机器上的,你要改成你机器的路径,如果是默认安装系统在c盘的话,路径应该不需要改的 ...
在java中,事务是什么?有什么用!
2、JTA(Java Transaction API)事务 JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。JTA允许应用程序执行分布式事务处理–在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。JDBC驱动程序的JTA支持极大地增强了数据访问能力。如...
在JAVA中何时用get和set方法
public class test(){ String str;public void set(String string){ this.str = string;} public String get(){ return this.str;} } 这就是set和get的最基本用法,例如一个标准的java bean就是所有变量和这些变量的set和get方法组成的。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点...
java的作用是什么
当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折...
如何在Java中进行图片剪裁 疯狂JAVA
package test;import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.nio.Buffer;import javax.imageio....
洪娜氨基: /** @version 1.32 2004-05-05 @author Cay Horstmann */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator { public static void main(String[] args) { CalculatorFrame frame = new CalculatorFrame(); frame....
江汉区15118028770: 怎样运行JAVA的图形界面求解 - ?
洪娜氨基: 使用 JBuilder 创建步骤:首先创建一个工程目录(Project).单击菜单 File,选择(New Project),修改工程名和指定工程路径,点击Finish 就好了.然后单击菜单 File 选择 New ,弹出一个 Object Gallery 窗体,在左边选择第一个 General(常...
江汉区15118028770: Java中怎么样进行图形界面编程? - ?
洪娜氨基: 用NetBeans做,可以直接拖放,不用自己布局,但是效率不怎么好
江汉区15118028770: 怎么用JAVA语言做出图形界面?推荐本好书吧 - ?
洪娜氨基: 这么跟你说吧,java编程中做界面的有2个类 java.awt 、javax.swing 这2个就是做图形化界面的.我也在学这些东西,差不多学完了,不过很多组件都没使用过,应为swing类里的组件太多了,没来得及用~~~ 推荐2本书 《游戏之旅-我的编程感悟》《JAVA 精通swing程序设计》
江汉区15118028770: 如何使java写出程序可以使用图形界面?
洪娜氨基: AWT 或 SWING . 不过 不建议用java做图形界面 . 开发成本太高.
江汉区15118028770: 用java怎么编写一个图形界面应用程序,其中包含一个按钮.当鼠标移到按钮上时,隐藏按钮 - ?
洪娜氨基: 给Button添加一个MouseListener,并实现void mouseEntered(MouseEvent e)这个方法,在这个方法中调用Button的setVisible(false)方法就可以了.
江汉区15118028770: java中的图形用户界面怎么用 - ?
洪娜氨基: JBuilder正解,java原生是没有.net那种拖拉式编辑的,必须使用eclipse等工具+JBuilder之类的插件才行
江汉区15118028770: java 图形化界面如何设计 - ?
洪娜氨基: 建议用一下JBulider,继承JFrame就可以了,JBulider里有设计GUI的窗口项.有兴趣的话可以加57732061或41752273可以交流一下.
江汉区15118028770: 在java中,设计图形用户界面需要经历哪几个基本步骤 - ?
洪娜氨基: 1, 分析业务需求, 理顺业务逻辑 2, 根据业务需要考虑使用何种容器(JFrame ,Frame ,JWindow..) 需要的数量. 3, 每个容器(窗口)使用组件 4.组件使用何种布局方式(边界布局,绝对布局,网格布局..),排列在容器(窗口)中 5.组件中需要响应那些事件, 把事件响应代码写好,然后绑定到组件上(addListener...) 6.调试,测试
江汉区15118028770: 请问JAVA编出来有图形界面的如何运行??
洪娜氨基: 你得写一个GUI的类,例:写一个类继承javax.swing.JFrame; 然后在构造方法里super("窗体标题"); this.setSize(int 高,int 宽); this.setVisiable(true); 不管是CMD模式下还是IDE下面都能运行出窗体来..