求JAVA程序 哪位好人能发我一个JAVA计算器程序,只要有十进制转换成二进制的运算就行,要图形界面的~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 留下E-mail给我,记得给我加分 这个是模拟计算机用java实现的,但是太长了.我就分着发啊:import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.lang.*;/* *项目名:科学计算器 *时间:09/01/15 *编辑者:吴庆和高翔 */public class Calculatort extends JFrame { JFrame conFrame=new JFrame(); //菜单栏 MenuBar bar; Menu fileMenu,editMenu,viewMenu; MenuItem copyItem,zhanItem,tuiItem; //面板和单行文本 JTextField conField; JPanel jpanel1,jpanel3; JScrollPane scrollHelp; JTextArea help; JFileChooser jf5; //按钮 JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9; JButton jbcot,jbsin,jbcos,jbtan; JButton jbMc,jbMr,jbM,JB,Jfu,JCE,jbms; JButton jbchu,jbdeng,jbdot,jbcheng,jbjian,jbjia,jbsq,jbbai,jbdao; String str1="0"; //运算数1 初值一定为0 为了程序的安全 String str2="0"; //运算数2 String fh="+"; //运算符 String jg="0.";//结果 String mid="."; boolean pit=true; //状态开关 重要 int k1=1;//开关1 用于选择输入方向 将要写入str2或 str2 int k2=1;//开关2 符号键 次数 k2>1说明进行的是2+3-9+8 这样的多符号运算 int k3=1;//开关3 str1 是否可以被清0 ==1时可以 !=1时不能被清0 int k4=1;//开关4 str2 同上 int k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉 JButton jicunqi; //寄存器 记录 是否连续按下符号键 Vector vt=new Vector(20,10); //控制窗体在中央 Dimension fSize=new Dimension(410,280); Dimension wSize=Toolkit.getDefaultToolkit().getScreenSize(); Point point=new Point(wSize.width/2-fSize.width/2,wSize.height/2-fSize.height/2); //主面板 Panel mainPane=new Panel(new BorderLayout()); //构造函数 public Calculatort(String s){ super(s); JB=new JButton("back"); JB.setForeground(new Color(0, 0, 255)); JCE=new JButton("C"); Jfu=new JButton("+/-"); jbsq=new JButton("√"); jbbai=new JButton("%"); jbdao=new JButton("1/x"); jbMc=new JButton("MC"); jbsin=new JButton("sin"); jb7=new JButton("7"); jb8=new JButton("8"); jb9=new JButton("9"); jbjia=new JButton("+"); jbMr=new JButton("MR"); jbcos=new JButton("cos"); jb4=new JButton("4"); jb5=new JButton("5"); jb6=new JButton("6"); jbjian=new JButton("-"); jbms=new JButton("MS"); jbtan=new JButton("tan"); jb1=new JButton("1"); jb2=new JButton("2"); jb3=new JButton("3"); jbcheng=new JButton("*"); jbM=new JButton("M+"); jbcot=new JButton("cot"); jb0=new JButton("0"); jbdot=new JButton("."); jbdeng=new JButton("="); jbchu=new JButton("/"); add(mainPane); setSize(fSize); setResizable(false); setLocation(point); CreateMenu(); Grid(); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent ar){ try{ int v=JOptionPane.showConfirmDialog(null,"是否退出!"); if(v==JOptionPane.YES_OPTION){ dispose(); }else if(v==JOptionPane.NO_OPTION){ } }catch(Exception ex){ ex.printStackTrace(); } } }); this.setVisible(true); } //菜单栏 private void CreateMenu(){ MenuBar bar=new MenuBar(); setMenuBar(bar); Menu fileMenu=new Menu("编辑(E)"); Menu editMenu=new Menu("查看(V)"); Menu viewMenu=new Menu("帮助(H)"); bar.add(fileMenu); bar.add(editMenu); bar.add(viewMenu); MenuItem copyItem=new MenuItem("复制(C) Ctrl+C"); copyItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ conField.copy(); }}); MenuItem zhanItem=new MenuItem("粘贴(V) Ctrl+V"); zhanItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ conField.paste(); }}); MenuItem tuiItem=new MenuItem("退出"); tuiItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); }}); fileMenu.add(copyItem); fileMenu.add(zhanItem); fileMenu.add(tuiItem); MenuItem bItem=new MenuItem("标准型(T)"); bItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int type=JOptionPane.INFORMATION_MESSAGE; String message="当前就是标准型";; JOptionPane.showMessageDialog(conFrame,message,null,type); }}); MenuItem kItem=new MenuItem("科学型(S)"); kItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int type=JOptionPane.INFORMATION_MESSAGE; String title="科学型"; String message= "当前是标准型计算器,\n科学型计算器有待更新。"; JOptionPane.showMessageDialog(conFrame,message,title,type); }}); MenuItem sItem=new MenuItem("数字分组(I)"); editMenu.add(bItem); editMenu.add(kItem); editMenu.add(sItem); MenuItem hItem=new MenuItem("帮助主题(H)"); hItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ help = new JTextArea(5, 20); int type=JOptionPane.INFORMATION_MESSAGE; scrollHelp = new JScrollPane(help); help.setEditable(false); String title="用户须知"; help.append("执行简单计算\n"); help.append("1.键入计算的第一个数字。\n"); help.append("2.单击(+)执行加,(-)执行减,(*)执行乘,(/)执行除等等用法。\n"); help.append("3.键入计算的下一个数字。\n"); help.append("4.输入所有剩余的运算符和数字。\n"); help.append("5.单击(=)。\n"); JOptionPane.showMessageDialog(conFrame,scrollHelp,title,type); }}); MenuItem aItem=new MenuItem("关于计算器(A)"); aItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int type=JOptionPane.INFORMATION_MESSAGE; String title="About"; String message= "计算器2.11版\n开发者:MIPO"; JOptionPane.showMessageDialog(conFrame,message,title,type); }}); viewMenu.add(hItem); viewMenu.add(aItem); } public void Grid(){ //单行文本 jpanel1=new JPanel(); conField=new JTextField("0.",36); conField.setEditable(true); jpanel1.add(conField); conField.requestFocus();// conField.setBackground(new Color(255, 255, 255)); mainPane.add(jpanel1,BorderLayout.NORTH); conField.setHorizontalAlignment(JTextField.RIGHT); conField.setEnabled(true); //jpanel3面板 jpanel3 = new JPanel(); jpanel3.setBounds(0,0,300,100); jpanel3.setLayout(new GridLayout(5,6,5,5)); mainPane.add(jpanel3,BorderLayout.CENTER); jb0.setMnemonic(KeyEvent.VK_0);//等效键 jpanel3.add(JB); jpanel3.add(JCE); jpanel3.add(Jfu); jpanel3.add(jbsq); jpanel3.add(jbbai); jpanel3.add(jbdao); jpanel3.add(jbMc); jpanel3.add(jbsin); jpanel3.add(jb7); jpanel3.add(jb8); jpanel3.add(jb9); jpanel3.add(jbjia); jpanel3.add(jbMr); jpanel3.add(jbcos); jpanel3.add(jb4); jpanel3.add(jb5); jpanel3.add(jb6); jpanel3.add(jbjian); jpanel3.add(jbms); jpanel3.add(jbtan); jpanel3.add(jb1); jpanel3.add(jb2); jpanel3.add(jb3); jpanel3.add(jbcheng); jpanel3.add(jbM); jpanel3.add(jbcot); jpanel3.add(jb0); jpanel3.add(jbdot); jpanel3.add(jbdeng); jpanel3.add(jbchu); //数 字 键 class JianTing implements ActionListener{ public void actionPerformed(ActionEvent e){ String ss=((JButton)e.getSource()).getText(); jicunqi=(JButton)e.getSource(); vt.add(jicunqi); if (k1==1){//开关 k1 为1时,向数1写 为2时,向数2写 if(k3==1){//str1 是否可以被清0 ==1时可以 !=1时不能被清0 str1=""; k5=1;//还原开关k5状态 } str1=str1+ss; k3=k3+1;//str1 是否可以被清0 ==1时可以 !=1时不能被清0 conField.setText(str1);//显示 }else if(k1==2){//开关 k1 为1时,向数1写 为2时,向数2写 if (k4==1){//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算 str2=""; k5=1; //还原开关k5状态 } str2=str2+ss; k4=k4+1;//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算 conField.setText(str2); } } } //符 号 class JianTing_fh implements ActionListener{ public void actionPerformed(ActionEvent e){ String ss2=((JButton)e.getSource()).getText(); jicunqi=(JButton)e.getSource(); vt.add(jicunqi); if(k2==1){//开关1 用于选择输入方向 将要写入str2或 str2 k1=2;//开关 k1 为1时,向数1写 为2时,向数2写 k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉 fh=ss2; k2=k2+1;//按符号键的次数 }else{ int a=vt.size(); JButton c=(JButton)vt.get(a-2); if(!(c.getText().equals("+"))&&!(c.getText().equals("-"))&&!(c.getText().equals("*"))&&!(c.getText().equals("/"))&&!(c.getText().equals("%"))){ yuns(); str1=jg; k1=2;//开关 k1 为1时,向数1写 为2时,向数2写 k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉 k4=1;//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算 fh=ss2;//运算符 } k2=k2+1; //按符号键的次数 } } } //等 于 class JianTing_dy implements ActionListener{ public void actionPerformed(ActionEvent e){ jicunqi=(JButton)e.getSource(); vt.add(jicunqi); yuns(); k1=1; //还原开关k1状态(//开关1 用于选择输入方向 将要写入str2或 str2) k2=1;//开关2 符号键 次数 k2>1说明进行的是2+3-9+8 这样的多符号运算 k3=1;//还原开关k3状态( str1 是否可以被清0 ==1时可以 !=1时不能被清0) k4=1; //还原开关k4状态(开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算) str1=jg; //为7+5=12 +5=17 这种计算做准备 } } //清除 class JianTing_clear implements ActionListener{ public void actionPerformed(ActionEvent e){ jicunqi=(JButton)e.getSource(); vt.add(jicunqi); k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉 k2=1;//开关2 符号键 次数 k2>1说明进行的是2+3-9+8 这样的多符号运算 k1=1;//开关1 用于选择输入方向 将要写入str2或 str2 k3=1;//str1 是否可以被清0 ==1时可以 !=1时不能被清0 k4=1;//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算 str1="0"; //运算数1 初值一定为0 为了程序的安全 str2="0";//运算数2 fh="";//运算符 jg="";//结果 vt.clear(); conField.setText("0."); } } http://www.5fuyou.com/images/head/DownLoad.html 分享一个编程视频下载地址,很好,很强大 java中怎么启动本机exe软件 QQ聊天窗口,布局,各个组件大小布置问题 java基础问题!!!!!! 如此简单的问题,马上给分 <<分析模式>>求助 多线程中Connection管理问题。 如何用Swing做出具有与MS_Word一样功能强大的ToolBars! 文件过滤??? int类型的数组是对象吗? 在Java Applet中如何实现picture.gif的旋转? 请教 gridbaglayout布局 什么是外部中断??
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.*;/*
*项目名:科学计算器
*时间:09/01/15
*编辑者:吴庆和高翔
*/public class Calculatort extends JFrame {
JFrame conFrame=new JFrame();
//菜单栏
MenuBar bar;
Menu fileMenu,editMenu,viewMenu;
MenuItem copyItem,zhanItem,tuiItem;
//面板和单行文本
JTextField conField;
JPanel jpanel1,jpanel3;
JScrollPane scrollHelp;
JTextArea help;
JFileChooser jf5;
//按钮
JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9;
JButton jbcot,jbsin,jbcos,jbtan;
JButton jbMc,jbMr,jbM,JB,Jfu,JCE,jbms;
JButton jbchu,jbdeng,jbdot,jbcheng,jbjian,jbjia,jbsq,jbbai,jbdao;
String str1="0"; //运算数1 初值一定为0 为了程序的安全
String str2="0"; //运算数2
String fh="+"; //运算符
String jg="0.";//结果
String mid=".";
boolean pit=true;
//状态开关 重要
int k1=1;//开关1 用于选择输入方向 将要写入str2或 str2
int k2=1;//开关2 符号键 次数 k2>1说明进行的是2+3-9+8 这样的多符号运算
int k3=1;//开关3 str1 是否可以被清0 ==1时可以 !=1时不能被清0
int k4=1;//开关4 str2 同上
int k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉
JButton jicunqi; //寄存器 记录 是否连续按下符号键
Vector vt=new Vector(20,10);
//控制窗体在中央
Dimension fSize=new Dimension(410,280);
Dimension wSize=Toolkit.getDefaultToolkit().getScreenSize();
Point point=new Point(wSize.width/2-fSize.width/2,wSize.height/2-fSize.height/2);
//主面板
Panel mainPane=new Panel(new BorderLayout());
//构造函数
public Calculatort(String s){
super(s);
JB=new JButton("back");
JB.setForeground(new Color(0, 0, 255));
JCE=new JButton("C");
Jfu=new JButton("+/-");
jbsq=new JButton("√");
jbbai=new JButton("%");
jbdao=new JButton("1/x");
jbMc=new JButton("MC");
jbsin=new JButton("sin");
jb7=new JButton("7");
jb8=new JButton("8");
jb9=new JButton("9");
jbjia=new JButton("+");
jbMr=new JButton("MR");
jbcos=new JButton("cos");
jb4=new JButton("4");
jb5=new JButton("5");
jb6=new JButton("6");
jbjian=new JButton("-");
jbms=new JButton("MS");
jbtan=new JButton("tan");
jb1=new JButton("1");
jb2=new JButton("2");
jb3=new JButton("3");
jbcheng=new JButton("*");
jbM=new JButton("M+");
jbcot=new JButton("cot");
jb0=new JButton("0");
jbdot=new JButton(".");
jbdeng=new JButton("=");
jbchu=new JButton("/");
add(mainPane);
setSize(fSize);
setResizable(false);
setLocation(point);
CreateMenu();
Grid();
public void windowClosing(WindowEvent ar){
try{
int v=JOptionPane.showConfirmDialog(null,"是否退出!");
if(v==JOptionPane.YES_OPTION){
dispose();
}else if(v==JOptionPane.NO_OPTION){
}
}catch(Exception ex){
ex.printStackTrace();
}
}
});
this.setVisible(true);
}
//菜单栏
private void CreateMenu(){
MenuBar bar=new MenuBar();
setMenuBar(bar);
Menu fileMenu=new Menu("编辑(E)");
Menu editMenu=new Menu("查看(V)");
Menu viewMenu=new Menu("帮助(H)");
bar.add(fileMenu);
bar.add(editMenu);
bar.add(viewMenu);
MenuItem copyItem=new MenuItem("复制(C) Ctrl+C");
copyItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
conField.copy();
}});
MenuItem zhanItem=new MenuItem("粘贴(V) Ctrl+V");
zhanItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
conField.paste();
}});
MenuItem tuiItem=new MenuItem("退出");
tuiItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}});
fileMenu.add(copyItem);
fileMenu.add(zhanItem);
fileMenu.add(tuiItem);
MenuItem bItem=new MenuItem("标准型(T)");
bItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int type=JOptionPane.INFORMATION_MESSAGE;
String message="当前就是标准型";;
JOptionPane.showMessageDialog(conFrame,message,null,type);
}});
MenuItem kItem=new MenuItem("科学型(S)");
kItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int type=JOptionPane.INFORMATION_MESSAGE;
String title="科学型";
String message= "当前是标准型计算器,\n科学型计算器有待更新。";
JOptionPane.showMessageDialog(conFrame,message,title,type);
}});
MenuItem sItem=new MenuItem("数字分组(I)");
editMenu.add(bItem);
editMenu.add(kItem);
editMenu.add(sItem);
MenuItem hItem=new MenuItem("帮助主题(H)");
hItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
help = new JTextArea(5, 20);
int type=JOptionPane.INFORMATION_MESSAGE;
scrollHelp = new JScrollPane(help);
help.setEditable(false);
String title="用户须知";
help.append("执行简单计算\n");
help.append("1.键入计算的第一个数字。\n");
help.append("2.单击(+)执行加,(-)执行减,(*)执行乘,(/)执行除等等用法。\n");
help.append("3.键入计算的下一个数字。\n");
help.append("4.输入所有剩余的运算符和数字。\n");
help.append("5.单击(=)。\n");
JOptionPane.showMessageDialog(conFrame,scrollHelp,title,type);
}});
MenuItem aItem=new MenuItem("关于计算器(A)");
aItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int type=JOptionPane.INFORMATION_MESSAGE;
String title="About";
String message= "计算器2.11版\n开发者:MIPO";
JOptionPane.showMessageDialog(conFrame,message,title,type);
}});
viewMenu.add(hItem);
viewMenu.add(aItem);
}
//单行文本
jpanel1=new JPanel();
conField=new JTextField("0.",36);
conField.setEditable(true);
jpanel1.add(conField);
conField.requestFocus();//
conField.setBackground(new Color(255, 255, 255));
mainPane.add(jpanel1,BorderLayout.NORTH);
conField.setHorizontalAlignment(JTextField.RIGHT);
conField.setEnabled(true);
//jpanel3面板
jpanel3 = new JPanel();
jpanel3.setBounds(0,0,300,100);
jpanel3.setLayout(new GridLayout(5,6,5,5));
mainPane.add(jpanel3,BorderLayout.CENTER);
jb0.setMnemonic(KeyEvent.VK_0);//等效键
jpanel3.add(JB);
jpanel3.add(JCE);
jpanel3.add(Jfu);
jpanel3.add(jbsq);
jpanel3.add(jbbai);
jpanel3.add(jbdao);
jpanel3.add(jbMc);
jpanel3.add(jbsin);
jpanel3.add(jb7);
jpanel3.add(jb8);
jpanel3.add(jb9);
jpanel3.add(jbjia);
jpanel3.add(jbMr);
jpanel3.add(jbcos);
jpanel3.add(jb4);
jpanel3.add(jb5);
jpanel3.add(jb6);
jpanel3.add(jbjian);
jpanel3.add(jbms);
jpanel3.add(jbtan);
jpanel3.add(jb1);
jpanel3.add(jb2);
jpanel3.add(jb3);
jpanel3.add(jbcheng);
jpanel3.add(jbM);
jpanel3.add(jbcot);
jpanel3.add(jb0);
jpanel3.add(jbdot);
jpanel3.add(jbdeng);
jpanel3.add(jbchu);
//数 字 键
class JianTing implements ActionListener{
public void actionPerformed(ActionEvent e){
String ss=((JButton)e.getSource()).getText();
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if (k1==1){//开关 k1 为1时,向数1写 为2时,向数2写
if(k3==1){//str1 是否可以被清0 ==1时可以 !=1时不能被清0
str1="";
k5=1;//还原开关k5状态
}
str1=str1+ss;
k3=k3+1;//str1 是否可以被清0 ==1时可以 !=1时不能被清0
conField.setText(str1);//显示
}else if(k1==2){//开关 k1 为1时,向数1写 为2时,向数2写
if (k4==1){//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算
str2="";
k5=1; //还原开关k5状态
}
str2=str2+ss;
k4=k4+1;//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算
conField.setText(str2);
}
}
} //符 号
class JianTing_fh implements ActionListener{
public void actionPerformed(ActionEvent e){
String ss2=((JButton)e.getSource()).getText();
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if(k2==1){//开关1 用于选择输入方向 将要写入str2或 str2
k1=2;//开关 k1 为1时,向数1写 为2时,向数2写
k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉
fh=ss2;
k2=k2+1;//按符号键的次数
}else{
int a=vt.size();
JButton c=(JButton)vt.get(a-2);
if(!(c.getText().equals("+"))&&!(c.getText().equals("-"))&&!(c.getText().equals("*"))&&!(c.getText().equals("/"))&&!(c.getText().equals("%"))){
yuns();
str1=jg;
k1=2;//开关 k1 为1时,向数1写 为2时,向数2写
k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉
k4=1;//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算
fh=ss2;//运算符
}
k2=k2+1; //按符号键的次数
}
}
}
//等 于
class JianTing_dy implements ActionListener{
public void actionPerformed(ActionEvent e){
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
yuns();
k1=1; //还原开关k1状态(//开关1 用于选择输入方向 将要写入str2或 str2)
k2=1;//开关2 符号键 次数 k2>1说明进行的是2+3-9+8 这样的多符号运算
k3=1;//还原开关k3状态( str1 是否可以被清0 ==1时可以 !=1时不能被清0)
k4=1; //还原开关k4状态(开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算)
str1=jg; //为7+5=12 +5=17 这种计算做准备
}
}
//清除
class JianTing_clear implements ActionListener{
public void actionPerformed(ActionEvent e){
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉
k2=1;//开关2 符号键 次数 k2>1说明进行的是2+3-9+8 这样的多符号运算
k1=1;//开关1 用于选择输入方向 将要写入str2或 str2
k3=1;//str1 是否可以被清0 ==1时可以 !=1时不能被清0
k4=1;//开关4 符号键 次数 k4>1说明进行的是2+3-9+8 这样的多符号运算
str1="0"; //运算数1 初值一定为0 为了程序的安全
str2="0";//运算数2
fh="";//运算符
jg="";//结果
vt.clear();
conField.setText("0.");
}
}