一、实验内容
题目:1、设计一个计算器
要求:1、使用layout进行布局,使界面更加友好
2、实现整数的加减乘除运算(不考虑优先级)二、实验过程
(这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据什么知识点以及使用方法进行实验以及实验步骤。不要简单照抄实习指导,更不可写一大堆源代码)
二、实验过程
1、进行计算器界面的布局:
a 、Panel的嵌套布局:
主要设置了七个Panel来将界面分成几个部分。且Panel都是用borderLayout来进行的布局。
如图所示,其中4、5、6、7分别表示Panel4、Panel5、Panel6、Panel7
Panel2由Panel4、Panel5组成;Panel3由Panel6、Panel7组成;
Panel1由Panel2、Panel3组成;
b、
(1)、在Panel6添加一个按钮并将border设置成LoweredBevel,设置按钮大小,并给按钮命名
(2)、将Panel7的layout 设置成FlowLayout,并添加三个按钮,设置按钮大小,并给按钮命名
(3)、将Panel5的layout 设置成gridLayout,并添加四个按钮,设置按钮大小,并给按钮命名
(4)、将Panel4的layout 设置成gridLayout,并添加二十个按钮,设置按钮大小,并给按钮命名
2、给对应按钮添加方法,实现起相应的功能
三、实验结果
1、计算器界面
2、实现功能
能进行整数基本的加减乘除运算、及其连续运算、清零。
四、讨论与分析
1、此实验主要是进行计算器界面的布局,根据电脑上的计算器设计布局
主要设置了七个Panel来将界面分成几个部分。且Panel都是用borderLayout来进行的布局。
2、刚刚开始不能实现连续运算,本程序的设计思路是,读取两次文本框的内容赋值给a,b。
后来在原来的 基础上增加了一个标志位,判断符号是不是第一次输入,如果不是则调用等于按钮功能,实现与等于相同的功能。
五、附录:关键代码
1、数字按钮方法:
如0:如果之前只输入过一次符号,则将数字添加在之前的数后面,否则将文本框置为数字"0"。
void num0_actionPerformed(ActionEvent e) {
if(flag1 == 0)
jTextField1.setText(jTextField1.getText() + "0");
else
{
jTextField1.setText("0");
flag1 = 0;
}
}
其它数字键相同的处理方法,即数字不一样
2、运算按钮:
若为加
void add_actionPerformed(ActionEvent e) {
if (flag == 0) {
a = Integer.parseInt(jTextField1.getText());
jTextField1.setText("");
}
else {
equ_actionPerformed(e);
flag1 = 1;
b = 0;
}
flag = 1;
}
若此次运算过程中第一次输入加号,则将文本框的内容转换成int型并赋值给a,再将文本框置空。否则,调用等于按钮方法,并将flag1 置1,b清零。最后符号位置1。
若为加法符号标志flag置1。若为减,符号标志flag置2。若为乘,符号标志flag置3。若为除,符号标志flag置4。
3、等于按钮:
void equ_actionPerformed(ActionEvent e) {
b = Integer.parseInt(jTextField1.getText());
switch (flag) {
case 1:
a += b;
break;
case 2:
a -= b;
break;
case 3:
a *= b;
break;
case 4:
a /= b;
break;
}
Flag= 0;
Flag 1 = 1;
jTextField1.setText(String.valueOf(a));
}
得到当前文本框内容,转换为整形,赋值给b。判断符号位,进行运算,将结果显示到文本框。
4、清零按钮
void jButton2_actionPerformed(ActionEvent e) {
jTextField1.setText("");
a = 0;
b = 0;
flag = 0;
flag1 = 0;
}
即将文本框,及所有变量置零
第二篇:java 计算器代码
/** Counter.java** Created on __DATE__, __TIME__*/package Counter;import java.awt.event.ActionEvent;/**** @author __USER__*/public class Counter extends javax.swing.JFrame {int Num1 = 0, Num2 = 0, temp = 0, temp2 = 0;enum Operation {ADD, MINUS, MULTIPLE, DIVIDE};Operation operation;boolean isToggle = false, isequal = false, isClicked = false;int result = 0;String oldText, newText;/** Creates new form Counter */public Counter() {initComponents();}//GEN-BEGIN:initComponents// <editor-fold defaultstate="collapsed" desc="Generated Code">private void initComponents() {jButtonNum2 = new javax.swing.JButton();jButtonNum3 = new javax.swing.JButton();jButtonNum4 = new javax.swing.JButton();jButtonNum5 = new javax.swing.JButton();jButtonNum6 = new javax.swing.JButton();jButtonNum7 = new javax.swing.JButton();jButtonNum8 = new javax.swing.JButton();jButtonNum9 = new javax.swing.JButton();AddjButton = new javax.swing.JButton();MinusjButton = new javax.swing.JButton();MultiplyjButton = new javax.swing.JButton();DividejButton = new javax.swing.JButton();equaljButton = new javax.swing.JButton();resultText = new javax.swing.JTextField();jButtonNum1 = new javax.swing.JButton();jButtonNum0 = new javax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {formMouseClicked(evt);}});jButtonNum2.setText("2");jButtonNum2.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum2MouseClicked(evt);}});jButtonNum3.setText("3");jButtonNum3.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum3MouseClicked(evt);}});jButtonNum4.setText("4");jButtonNum4.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum4MouseClicked(evt);}});jButtonNum5.setText("5");jButtonNum5.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum5MouseClicked(evt);}});jButtonNum6.setText("6");jButtonNum6.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum6MouseClicked(evt);}});jButtonNum7.setText("7");jButtonNum7.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum7MouseClicked(evt);}});jButtonNum8.setText("8");jButtonNum8.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt
.event.MouseEvent evt) {jButtonNum8MouseClicked(evt);}});jButtonNum9.setText("9");jButtonNum9.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum9MouseClicked(evt);}});AddjButton.setText("+");AddjButton.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {AddjButtonMouseClicked(evt);}});MinusjButton.setText("-");MinusjButton.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {MinusjButtonMouseClicked(evt);}});MultiplyjButton.setText("*");MultiplyjButton.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {MultiplyjButtonMouseClicked(evt);}});DividejButton.setText("/");DividejButton.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {DividejButtonMouseClicked(evt);}});equaljButton.setText("=");equaljButton.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {equaljButtonMouseClicked(evt);}});resultText.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {resultTextActionPerformed(evt);}});jButtonNum1.setText("1");jButtonNum1.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum1MouseClicked(evt);}});jButtonNum0.setText("0");jButtonNum0.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jButtonNum0MouseClicked(evt);}});javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(64, 64, 64).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(resultText,javax.swing.GroupLayout.PREFERRED_SIZE,314,javax.swing.GroupLayout.PREFERRED_SIZE).addGroup(layout.createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,false).addGroup(la
yout.createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING,false).addComponent(jButtonNum1).addComponent(jButtonNum7).addComponent(jButtonNum4)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jButtonNum8).addComponent(jButtonNum5)).addComponent(jButtonNum2)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jButtonNum9).addComponent(jButtonNum6).addComponent(jButtonNum3))).addComponent(jButtonNum0,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)).addGap(64,64,64).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(DividejButton).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE
D).addComponent(equaljButton)).addComponent(AddjButton).addComponent(MinusjButton).addComponent(MultiplyjButton)))).addGap(69, 69, 69)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(24, 24, 24).addComponent(resultText,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE).addGap(28, 28, 28).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButtonNum8).addComponent(jButtonNum7).addComponent(jButtonNum9).addComponent(AddjButton)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButtonNum5).addComponent(jButtonNum4).addComponent(jButtonNum6).addComponent(MinusjButton)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButtonNum3).addComponent(MultiplyjButton).addComponent(jButtonNum1).addComponent(jButtonNum2)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(equaljButton).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(DividejButton).addComponent(jButtonNum0))).addContainerGap(113, Short.MAX_VALUE)));pack();}// </editor-fold>//GEN-END:initComponentsprivate void jButtonNum0MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp =
0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("0");Num2 = 0;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "0";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void DividejButtonMouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = result;} else if (isClicked) {switch (operation) {case ADD:temp = result + Num2;break;case MINUS:temp = result - Num2;break;case MULTIPLE:temp = result * Num2;break;case DIVIDE:temp = result / Num2;break;default:break;}} else{temp =Num2;} resultText.setText(String.valueOf(temp));oldText = resultText.getText();Num1 = Integer.parseInt(oldText);Num2 = 0;result = temp;operation = Operation.DIVIDE;isToggle = true;isequal = false;isClicked = true;}private void MultiplyjButtonMouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = result;} else if (isClicked) {switch (operation) {case ADD:temp = result + Num2;break;case MINUS:temp = result - Num2;break;case MULTIPLE:temp = result * Num2;break;case DIVIDE:temp = result / Num2;break;default:break;}} else {result = 1;temp = result * Num2;}resultText.setText(String.valueOf(temp));oldText = resultText.getText();Num1 = Integer.parseInt(oldText);Num2 = 0;result = temp;operation = Operation.MULTIPLE;isToggle = true;isequal = false;isClicked = true;}private void jButtonNum9MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("9");Num2 = 9;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "9";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void jButtonNum8MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("8");Num2 = 8;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "8";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void jButtonNum7MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your hand
ling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("7");Num2 = 7;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "7";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void jButtonNum6MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("6");Num2 = 6;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "6";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void jButtonNum5MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("5");Num2 = 5;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "5";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void jButtonNum4MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("4");Num2 = 4;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "4";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void jButtonNum3MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("3");Num2 = 3;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "3";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void MinusjButtonMouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = result;} else if (isClicked) {switch (operation) {case ADD:temp = result + Num2;break;case MINUS:temp = result - Num2;break;case MULTIPLE:temp = result * Num2;break;case DIVIDE:temp = result / Num2;break;default:break;}} elsetemp = Num2;resultText.setText(String.valueOf(temp));oldText = resultTex
t.getText();Num1 = Integer.parseInt(oldText);Num2 = 0;result = temp;operation = Operation.MINUS;isToggle = true;isequal = false;isClicked = true;}private void AddjButtonMouseClicked(java.awt.event.MouseEvent evt) {if (isequal) {temp = result;} else if (isClicked) {switch (operation) {case ADD:temp = result + Num2;break;case MINUS:temp = result - Num2;break;case MULTIPLE:temp = result * Num2;break;case DIVIDE:temp = result / Num2;break;default:break;}} elsetemp = result + Num2;resultText.setText(String.valueOf(temp));oldText = resultText.getText();Num1 = Integer.parseInt(oldText);Num2 = 0;result = temp;operation = Operation.ADD;isToggle = true;isequal = false;isClicked = true;}private void equaljButtonMouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {switch (operation) {case ADD:result = result + Num2;resultText.setText(String.valueOf(result));isToggle = true;break;case MINUS:result = result - Num2;resultText.setText(String.valueOf(result));isToggle = true;break;case MULTIPLE:result = result * Num2;resultText.setText(String.valueOf(result));isToggle = true;break;case DIVIDE:result = result / Num2;resultText.setText(String.valueOf(result));isToggle = true;break;default:break;}} else {switch (operation) {case ADD:result = temp + Num2;resultText.setText(String.valueOf(result));isToggle = true;break;case MINUS:result = temp - Num2;resultText.setText(String.valueOf(result));isToggle = true;break;case MULTIPLE:result = temp * Num2;resultText.setText(String.valueOf(result));isToggle = true;break;case DIVIDE:result = temp / Num2;resultText.setText(String.valueOf(result));isToggle = true;break;default:break;}}isequal = true;}private void jButtonNum1MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;result = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("1");Num2 = 1;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "1";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void formMouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:}private void jButtonNum2MouseClicked(java.awt.event.MouseEvent evt) {// TODO add your handling code here:if (isequal) {temp = 0;Num2 = 0;Num1 = 0;resul
t = 0;temp2 = 0;isequal = false;}if (isToggle) {// 把结果显示的从新写resultText.setText("2");Num2 = 2;isToggle = false;} else {oldText = resultText.getText();newText = oldText + "2";resultText.setText(newText);Num2 = Integer.parseInt(newText);}}private void resultTextActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:}/*** @param args the command line arguments*/public static void main(String args[]) {java.awt.EventQueue.invokeLater(new Runnable() {public void run() {new Counter().setVisible(true);}});}//GEN-BEGIN:variables// Variables declaration - do not modifyprivate javax.swing.JButton AddjButton;private javax.swing.JButton DividejButton;private javax.swing.JButton MinusjButton;private javax.swing.JButton MultiplyjButton;private javax.swing.JButton equaljButton;private javax.swing.JButton jButtonNum0;private javax.swing.JButton jButtonNum1;private javax.swing.JButton jButtonNum2;private javax.swing.JButton jButtonNum3;private javax.swing.JButton jButtonNum4;private javax.swing.JButton jButtonNum5;private javax.swing.JButton jButtonNum6;private javax.swing.JButton jButtonNum7;private javax.swing.JButton jButtonNum8;private javax.swing.JButton jButtonNum9;private javax.swing.JTextField resultText;// End of variables declaration//GEN-END:variables}