java高扩展计算器

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

次计算器可以随意增加按钮,且不影响其它的按钮,如需增加更多的计算按钮只需要修改Answer2.java中的部分代码即可:

switch(ch1)

{case"=":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 0;

break;case"+":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 1;

break;case"-":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 2;

break;case"*":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 3;

break;case"/":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 4;

break;case"sqrt":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 5;

break;case"del":

flag= 6;

break;//后面追加case 键值,并赋值标志变量,flag++;}

}returnzongnum;

}PRivatestaticdoublefflag(doublenum,doublezongnum,intflag){switch(flag){case0:

zongnum=num;

break;case1:

zongnum=zongnum+num;

break;case2:

zongnum=zongnum-num;

break;case3:

zongnum=zongnum*num;

break;case4:

zongnum=zongnum/num;

break;case5:

zongnum=Math.cbrt(zongnum);

break;case6:

zongnum= 0;//此处填写相应的计算代码,判断flag;

break;

}returnzongnum;

}

以下是源代码,有startFrame.java 和 Answer2.java 分别给出:

importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.Font;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.lang.reflect.InvocationTargetException;importjava.util.Vector;importjavax.swing.GroupLayout;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;importjavax.swing.GroupLayout.Alignment;importjavax.swing.LayoutStyle.ComponentPlacement;importjavax.swing.SwingUtilities;importjavax.swing.border.EmptyBorder;publicclassstatrFrameextendsJFrameimplementsActionListener{privateintx,y;privateintwidth, height;privateJFrame jf;privateJPanel contentPane;privateJPanel panel,panel_1;privateJTextField jt;privateString str="",str1="",str2="";privateString[] strindex;privateVector<JButton> bu =newVector<>();publicstatrFrame(intwidth,intheight,intx,inty,String str){this.strindex =str.split(",");this.str =str;this.x =x;this.y =y;this.width =width;this.height=height;

jf=newJFrame("计算机");

panel=newJPanel();

panel_1=newJPanel();

jt=newJTextField();

contentPane=newJPanel();

contentPane.setBorder(newEmptyBorder(5, 5, 5, 5));

jf.setContentPane(contentPane);

GroupLayout gl_contentPane=newGroupLayout(contentPane);

gl_contentPane.setHorizontalGroup(

gl_contentPane.createParallelGroup(Alignment.LEADING)

.addGroup(gl_contentPane.createSequentialGroup()

.addGap(42)

.addComponent(panel, GroupLayout.DEFAULT_SIZE,342, Short.MAX_VALUE)

.addGap(38))

.addComponent(panel_1, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE,422, Short.MAX_VALUE)

);

gl_contentPane.setVerticalGroup(

gl_contentPane.createParallelGroup(Alignment.LEADING)

.addGroup(gl_contentPane.createSequentialGroup()

.addComponent(panel, GroupLayout.DEFAULT_SIZE,34, Short.MAX_VALUE)

.addPreferredGap(ComponentPlacement.RELATED)

.addComponent(panel_1, GroupLayout.DEFAULT_SIZE,202, Short.MAX_VALUE))

);

GridLayout gd=newGridLayout(x,y,0,0);

panel_1.setLayout(gd);

jt=newJTextField();

jt.setColumns(10);

GroupLayout gl_panel=newGroupLayout(panel);

gl_panel.setHorizontalGroup(

gl_panel.createParallelGroup(Alignment.LEADING)

.addComponent(jt, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE,342, Short.MAX_VALUE)

);

gl_panel.setVerticalGroup(

gl_panel.createParallelGroup(Alignment.LEADING)

.addComponent(jt, GroupLayout.PREFERRED_SIZE,34, GroupLayout.PREFERRED_SIZE)

);

panel.setLayout(gl_panel);

contentPane.setLayout(gl_contentPane);if(y!=0){

gd.setHgap(y);

panel_1.setLayout(gd);

}elsepanel_1.setLayout(newGridLayout());for(inti =0;i<strindex.length;i++){

bu.add(newJButton(strindex[i]));

}

}publicstatrFrame(intwidth,intheight,intx,String str){this.strindex =str.split(",");this.str =str;this.x =x;this.width =width;this.height=height;

jf=newJFrame("计算机");

panel=newJPanel();

panel_1=newJPanel();

jt=newJTextField();

contentPane=newJPanel();

contentPane.setBorder(newEmptyBorder(5, 5, 5, 5));

jf.setContentPane(contentPane);

GroupLayout gl_contentPane=newGroupLayout(contentPane);

gl_contentPane.setHorizontalGroup(

gl_contentPane.createParallelGroup(Alignment.LEADING)

.addGroup(gl_contentPane.createSequentialGroup()

.addGap(42)

.addComponent(panel, GroupLayout.DEFAULT_SIZE,342, Short.MAX_VALUE)

.addGap(38))

.addComponent(panel_1, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE,422, Short.MAX_VALUE)

);

gl_contentPane.setVerticalGroup(

gl_contentPane.createParallelGroup(Alignment.LEADING)

.addGroup(gl_contentPane.createSequentialGroup()

.addComponent(panel, GroupLayout.DEFAULT_SIZE,34, Short.MAX_VALUE)

.addPreferredGap(ComponentPlacement.RELATED)

.addComponent(panel_1, GroupLayout.DEFAULT_SIZE,202, Short.MAX_VALUE))

);

GridLayout gd=newGridLayout(x,y,0,0);

panel_1.setLayout(gd);

jt=newJTextField();

jt.setColumns(10);

GroupLayout gl_panel=newGroupLayout(panel);

gl_panel.setHorizontalGroup(

gl_panel.createParallelGroup(Alignment.LEADING)

.addComponent(jt, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE,342, Short.MAX_VALUE)

);

gl_panel.setVerticalGroup(

gl_panel.createParallelGroup(Alignment.LEADING)

.addComponent(jt, GroupLayout.PREFERRED_SIZE,34, GroupLayout.PREFERRED_SIZE)

);

panel.setLayout(gl_panel);

contentPane.setLayout(gl_contentPane);if(x!=0){

gd.setRows(x);

panel_1.setLayout(gd);

}elsepanel_1.setLayout(newGridLayout());for(inti =0;i<strindex.length;i++){

bu.add(newJButton(strindex[i]));

}

}publicvoidstart(){for(JButton button:bu){

JPanel panel_2=newJPanel();

panel_2.setLayout(newFlowLayout());

panel_1.add(panel_2);//button.setPreferredSize(new Dimension(130, 50));panel_2.add(button);

button.setFont(newFont("微软雅黑", Font.PLAIN, 40));

button.addActionListener(this);

jt.setFont(newFont("宋体", Font.PLAIN, 30));

}

jf.setDefaultCloSEOperation(EXIT_ON_CLOSE);

jf.setSize(width, height);

jf.setVisible(true);newAdjust().start();

}publicstaticvoidmain(String[] args) {try{

SwingUtilities.invokeAndWait(newRunnable() {

@Overridepublicvoidrun() {

statrFrame sf=newstatrFrame(500,600,5,"7,8,9,/,4,5,6,*,1,2,3,-,0,.,+,=,sqrt,->,del,abs");

sf.start();

}

});

}catch(InvocationTargetException |InterruptedException e) {//TODO Auto-generated catch blocke.printStackTrace();

}

}

@OverridepublicvoidactionPerformed(ActionEvent e) {

JButton jb=(JButton) e.getSource();if(jb.getText().equals("+")||jb.getText().equals("-")||jb.getText().equals("*")||jb.getText().equals("/")||jb.getText().equals("sqrt"))

{

str2=str2+",";

str2=str2+jb.getText();

str2=str2+",";

str1=str1+jb.getText();

}if(jb.getText().equals("="))

{if(Answer2.suanzhi(str2) % 1.0 == 0){

str1=Long.toString((long)Answer2.suanzhi(str2));

}else{

str1=Double.toString(Answer2.suanzhi(str2));

}

}if(jb.getText().equals("1")||jb.getText().equals("2")||jb.getText().equals("3")||jb.getText().equals("4")||jb.getText().equals("5")||jb.getText().equals("6")||jb.getText().equals("7")||jb.getText().equals("8")||jb.getText().equals("9")||jb.getText().equals("0")||jb.getText().equals("."))

{

str1=str1+jb.getText();

str2=str2+jb.getText();

}if(jb.getText().equals("del"))

{

str1= "";

}if(jb.getText().equals("->"))

{

str1= str1.substring(0, str1.length()-1);

}

jt.setText(str1);

}publicclassAdjustextendsThread{

@Overridepublicvoidrun() {while(true){

jt.setPreferredSize(newDimension(jf.getWidth()/6, jf.getHeight()/15));for(JButton button:bu){

button.setPreferredSize(newDimension(jf.getWidth()/7, jf.getHeight()/10));

}

}

}

}

}

publicclassAnswer2 {publicstaticdoublesuanzhi(String str){doublezongnum=0;doublenum=0;intindex=0;intflag=0;

String s1="";

str=str+",=";

String[] ch= str.split(",");for(inti=0;i<ch.length;i++){

String ch1=ch[i];switch(ch1)

{case"=":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 0;

break;case"+":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 1;

break;case"-":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 2;

break;case"*":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 3;

break;case"/":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 4;

break;case"sqrt":

num= Double.parseDouble(ch[i-1]);

zongnum=fflag(num,zongnum,flag);

flag= 5;

break;case"del":

flag= 6;

break;

}

}returnzongnum;

}privatestaticdoublefflag(doublenum,doublezongnum,intflag){switch(flag){case0:

zongnum=num;

break;case1:

zongnum=zongnum+num;

break;case2:

zongnum=zongnum-num;

break;case3:

zongnum=zongnum*num;

break;case4:

zongnum=zongnum/num;

break;case5:

zongnum=Math.cbrt(zongnum);

break;case6:

zongnum= 0;

break;

}returnzongnum;

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航