
/计算器/
import javaawt;
import javaxswing;
import javaxswingborder;
import javaawtevent;
public class Calculator implements ActionListener{
JFrame frame;
JPanel panel;
JTextField tfShow;/定义显示文本框/
JButton b1[]=new JButton[10]; /数字按钮/
JButton b2[]=new JButton[6]; / *** 作按钮/
boolean isNumber;/判断是否输入多位数字的变量/
double number;/存储输入数值、显示结果的变量/
double result;/存储中间运算结果的变量/
char operator;/存储当前 *** 作符的成员变量/
public Calculator(){
frame=new JFrame("计算器");
framesetSize(300,300);/指定框架窗口的大小/
framesetResizable(false);/使框架窗口不可改变大小/
JPanel contentPane=(JPanel)framegetContentPane();
contentPanesetBorder(new EmptyBorder(20,20,20,20));/绘制框架的指定大小的空透明边框/
tfShow=new JTextField("0",25);/指定属性的文本域/
tfShowsetHorizontalAlignment(JTextFieldRIGHT);/设置文本域中文本的对齐方式/
isNumber=true;/初始值设置/
number=0;/初始值设置/
result=0;/初始值设置/
operator=' ';/初始值设置/
for(int i=0;i<b1length;i++){
b1[i]=new JButton(IntegertoString(i));/创建数字按钮/
b1[i]setActionCommand(IntegertoString(i));
b1[i]addActionListener(this);
b1[i]setForeground(Colorblue);
}
String bs[]={"/","","-","C","+","="};
for(int i=0;i<b2length;i++){
b2[i]=new JButton(bs[i]);/创建 *** 作按钮/
b2[i]setActionCommand(bs[i]);
b2[i]addActionListener(this);
b2[i]setForeground(Colorred);
}
panel=new JPanel();
panelsetLayout(new GridLayout(4,5));
paneladd(b1[1]);
paneladd(b1[2]);
paneladd(b1[3]);
paneladd(b2[0]);
paneladd(b1[4]);
paneladd(b1[5]);
paneladd(b1[6]);
paneladd(b2[1]);
paneladd(b1[7]);
paneladd(b1[8]);
paneladd(b1[9]);
paneladd(b2[2]);
paneladd(b1[0]);
paneladd(b2[3]);
paneladd(b2[4]);
paneladd(b2[5]);
frameadd(tfShow,BorderLayoutNORTH);/将文本框放置在框架上方/
frameadd(panel,BorderLayoutCENTER);/将装有按钮组的panel放在框架的中心/
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);/设置框架窗口的默认窗口关闭 *** 作/
framesetVisible(true);/设置框架可见/
}
public double getDisplay(){/返回要显示的结果/
return number;
}
public void reDisplay(){/刷新文本域的内容/
tfShowsetText(""+getDisplay());
}
/对输入数字的处理/
public void numberProcess(int num){
if(isNumber&&num!=0){
String s1=IntegertoString(num);
String s2=IntegertoString((int)(thisnumber));
thisnumber=DoubleparseDouble(s2+s1);/对多位数字的处理/
}else{
thisnumber=num;
}
isNumber=true;/输入连续数字(即多位数字)时为真/
}
public void operationProcess(char operator){/根据输入的 *** 作符改变当前 *** 作符/
switch(operator){
case '-':
thisoperator='-';
break;
case '+':
thisoperator='+';
break;
case '':
thisoperator='';
break;
case '/':
thisoperator='/';
break;
}
result=number;
isNumber=false;/输入 *** 作符时表示输入连续数字的标记变量为假/
}
public void clear(){
number=0;
result=0;
}
public void equal(){/计算运算结果/
switch(operator){
case '-':
result=result-number;
break;
case '+':
result=result+number;
break;
case '':
result=resultnumber;
break;
case '/':
result=result/number;
break;
case ' ':
result=number;
break;
}
number=result; /把运算结果赋值给显示变量/
isNumber=false;
operator=' ';
}
public static void main(String args[]){
Calculator cal=new Calculator();/创建计算器/
}
public void actionPerformed(ActionEvent e){
String command=egetActionCommand();/获取按钮激发的 *** 作事件的命令名称/
char c=commandcharAt(0);/将按钮命令名称的第一个字符赋值给一个字符c/
switch(c){
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
int number=IntegerparseInt(command);
numberProcess(number);/输入数字的处理/
break;
case '+':
case '-':
case '':
case '/':
operationProcess(c);/算数运算符的处理/
break;
case '=':equal();break;/计算运算结果/
case 'C':clear();break;/清零/
}
reDisplay(); /在文本域中显示信息/
}
}
这是我做的一个计算器:运行截图
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJPanel;
import javaxswingJTextField;
import javaxswingSwingConstants;
import javaxswingborderEmptyBorder;
@SuppressWarnings("serial")
/ 加减乘除计算小程序 ,哥们绝对原创,给你了。浪费我半个小时,有啥问题在问,继续看**/
public class JiSu extends JFrame {
private int li=0;
private String s1="",s2="",s3=""; // s2 + s3得到最后结果
private JPanel cp1;
private JTextField t1; // 文本框
private JButton br[][]=new JButton[4][4]; //二维数组 建立按钮
private char text[][]={{'1','2','3','/'},{'4','5','6',''},{'7','8','9','-'},{'0','=','','+'}}; //二维数组 为按钮赋值 和做+-×÷运算判断的字符值
private boolean ip=false;
//main 执行
public static void main(String[] args) {
JiSu frame = new JiSu();
framesetTitle("计算器");
framesetVisible(true);
}
public JiSu() {
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
setBounds(100, 100, 305, 243);
cp1 = new JPanel();
cp1setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(cp1);
cp1setLayout(null);
//文本框
t1 = new JTextField("");
t1setHorizontalAlignment(SwingConstantsRIGHT);
t1setBounds(38, 20, 168, 21);
cp1add(t1);
t1setColumns(10);
//清空
JButton bt = new JButton("C");
btaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
t1setText("");
s1=s2=s3="";
}
});
btsetBounds(213, 19, 46, 23);
cp1add(bt);
//4X4 事件按钮
int x,y=65;//坐标
for (int i = 0; i < brlength; i++) {
x=35;
for (int j = 0; j < br[i]length; j++) {
br[i][j] = new JButton(text[i][j]+"");
br[i][j]setBounds(x, y, 45, 23);
br[i][j]addActionListener(new M());
cp1add(br[i][j]);
x=x+60;
}
y=y+33;
}
}// 文本框 添加 数字 并判断
private void set(int i,int j){
if (t1getText()equals("")&&getText(i, j)=='') {
s1="0";
}
s1=s1+getText(i, j);
t1setText(s1);
}
//[][]的麻烦,直接传递参数获取值
private char getText(int i,int j){
return text[i][j];
}
//事件监听器
class M implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//循环按钮二维数组得到事件监听
for (int i = 0; i < brlength; i++) {
for (int j = 0; j < br[i]length; j++) {
s1=t1getText();
if (egetSource()equals(br[i][j])) {
if(ip){t1setText(""); s1=""; ip=false;}
//switch语句 判断
switch (getText(i, j)) {
case '+':
count();
li=1;
s3=t1getText(); t1setText("");
break;
case '-':
li=2;
s3=t1getText(); t1setText("");
break;
case '':
li=3;
s3=t1getText(); t1setText("");
break;
case '/':
li=4;
s3=t1getText(); t1setText("");
break;
case '=':
s2=t1getText();
count();
break;
case '':
if(!t1getText()contains("")){
set(i,j);
}
break;
default:
set(i,j);
break;
}//swich 结束
}//if 事件选择 结束
}
}
}
//最终计算方法
private void count() {
double i=0,j=0;
if (s3equals("")) {
i=0;
}
else if(s2equals("")){
j=0;
}else {
i=DoubleparseDouble(s3);//字符串转换成double类型
j=DoubleparseDouble(s2);
}
if(li==1)
i=i+j; t1setText(i+"");
if(li==2)
i=i-j; t1setText(i+"");
if(li==3)
i=ij; t1setText(i+"");
if(li==4)
i=i/j; t1setText(i+"");
ip=true;//当ip=true 传入事件中,当点击任意按钮,开始新的计算
}//计算结尾
} //监听类块 结尾
}//程序结尾
/
/
import javaawt;
import javaawtevent;
import javaxswing;
import javautilVector;
public class Tuo
{
String str1="0"; //运算数1 初值一定为0 为了程序的安全
String str2="0"; //运算数2
String fh="+"; //运算符
String jg="";//结果
//状态开关 重要
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);
JFrame frame=new JFrame("sunshine---计算器");
JTextField jg_TextField=new JTextField(jg,20);//20列
JButton clear_Button=new JButton("清除");
JButton button0=new JButton("0");
JButton button1=new JButton("1");
JButton button2=new JButton("2");
JButton button3=new JButton("3");
JButton button4=new JButton("4");
JButton button5=new JButton("5");
JButton button6=new JButton("6");
JButton button7=new JButton("7");
JButton button8=new JButton("8");
JButton button9=new JButton("9");
JButton button_Dian=new JButton("");
JButton button_jia=new JButton("+");
JButton button_jian=new JButton("-");
JButton button_cheng=new JButton("");
JButton button_chu=new JButton("/");
JButton button_dy=new JButton("=");
////////////////////////////////////////////////////////////////////////
public static void main(String[] args)
{
Tuo tuo=new Tuo();
}
/////////////////////////////////////////////////////////////////////////
Tuo()
{
button0setMnemonic(KeyEventVK_0);//等效键
//其它 等效键 略,
jg_TextFieldsetHorizontalAlignment(JTextFieldRIGHT );//文本框 右对齐
JPanel pan=new JPanel();
pansetLayout(new GridLayout(4,4,5,5));//四行四列 边距为5像素
panadd(button7);
panadd(button8);
panadd(button9);
panadd(button_chu);
panadd(button4);
panadd(button5);
panadd(button6);
panadd(button_cheng);
panadd(button1);
panadd(button2);
panadd(button3);
panadd(button_jian);
panadd(button0);
panadd(button_Dian);
panadd(button_dy);
panadd(button_jia);
pansetBorder(BorderFactorycreateEmptyBorder(5,5,5,5));//pan对象的边距
JPanel pan2=new JPanel();
pan2add(jg_TextField);
JPanel pan3=new JPanel(); //为什么要 多此一句呢? 因为我不会设置 按钮的大小
pan3setLayout(new FlowLayout());
pan3add(clear_Button);
//clear_ButtonsetSize(10,10);//设置清零按钮的大小 吗的 不好使 !!
framesetLocation(300, 200); //主窗口 出现在位置
framesetResizable(false); //不能调大小
framegetContentPane()setLayout(new BorderLayout());
framegetContentPane()add(pan2,BorderLayoutNORTH);
framegetContentPane()add(pan,BorderLayoutCENTER);
framegetContentPane()add(pan3,BorderLayoutSOUTH);
framepack();
framesetVisible(true);
//以上是 控件 和 布局
//下面是事件处理 程 序
//--------------- 数 字 键 ----------------
class JianTing implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String ss=((JButton)egetSource())getText();
jicunqi=(JButton)egetSource();
vtadd(jicunqi);
if (k1==1)
{
if(k3==1)
{
str1="";
k5=1;//还原开关k5状态
}
str1=str1+ss;
//k2=1;
k3=k3+1;
//Systemoutprintln(str1);
jg_TextFieldsetText(str1);//显示
}
else if(k1==2)
{
if (k4==1)
{
str2="";
k5=1; //还原开关k5状态
}
str2=str2+ss;
//k2=2;
k4=k4+1;
///////////////测试////////////////
jg_TextFieldsetText(str2);
}
}
}
//--------符 号-----------
class JianTing_fh implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String ss2=((JButton)egetSource())getText();
jicunqi=(JButton)egetSource();
vtadd(jicunqi);
if(k2==1)
{
k1=2;//开关 k1 为1时,向数1写 为2时,向数2写
k5=1;
fh=ss2;
k2=k2+1;//按符号键的次数
}
else
{
int a=vtsize();
JButton c=(JButton)vtget(a-2);
if(!(cgetText()equals("+"))&&!(cgetText()equals("-"))&&!(cgetText()equals(""))&&!(cgetText()equals("/")))
//if(!(vtget(a-2)getText()equals("-"))||!(vtget(a-2)getText()equals("+"))||!(vtget(a-2)getText()equals(""))||!(vtget(a-2)getText()equals("/")))
{ yuns();
str1=jg;
k1=2;//开关 k1 为1时,向数1写 为2时,向数2写
k5=1;
k4=1;
fh=ss2;
} k2=k2+1;
}
}
}
//--------清除-------
class JianTing_clear implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)egetSource();
vtadd(jicunqi);
k5=1;
k2=1;
k1=1;
k3=1;
k4=1;
str1="0";
str2="0";
fh="";
jg="";
jg_TextFieldsetText(jg);
vtclear();
}
}
//----------------等 于 ---------------------
class JianTing_dy implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)egetSource();
vtadd(jicunqi);
yuns();
k1=1; //还原开关k1状态
//str1=jg;
k2=1;
k3=1;//还原开关k3状态
k4=1; //还原开关k4状态
str1=jg; //为7+5=12 +5=17 这种计算做准备
}
}
//----------------小数点 ---------------------
class JianTing_xiaos implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)egetSource();
vtadd(jicunqi);
if(k5==1)
{
String ss2=((JButton)egetSource())getText();
if (k1==1)
{
if(k3==1)
{
str1="";
k5=1; //还原开关k5状态
}
str1=str1+ss2;
//k2=1;
k3=k3+1;
//Systemoutprintln(str1);
jg_TextFieldsetText(str1);//显示
}
else if(k1==2)
{
if (k4==1)
{
str2="";
k5=1; //还原开关k5状态
}
str2=str2+ss2;
//k2=2;
k4=k4+1;
///////////////测试////////////////
jg_TextFieldsetText(str2);
}
}
k5=k5+1; //
}
}
//注册 监听器
JianTing_dy jt_dy=new JianTing_dy();
JianTing jt= new JianTing();//临听数字键
JianTing_fh jt_fh= new JianTing_fh();//临 听符 号键
JianTing_clear jt_c=new JianTing_clear(); //清除键
JianTing_xiaos jt_xs=new JianTing_xiaos();// 小数点 键
button7addActionListener(jt);
button8addActionListener(jt);
button9addActionListener(jt);
button_chuaddActionListener(jt_fh);
button4addActionListener(jt);
button5addActionListener(jt);
button6addActionListener(jt);
button_chengaddActionListener(jt_fh);
button1addActionListener(jt);
button2addActionListener(jt);
button3addActionListener(jt);
button_jianaddActionListener(jt_fh);
button0addActionListener(jt);
button_DianaddActionListener(jt_xs);
button_dyaddActionListener(jt_dy);
button_jiaaddActionListener(jt_fh);
clear_ButtonaddActionListener(jt_c);
//关闭事件处理程序
frameaddWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
Systemexit(0);
}
});
}
//---------------计 算------------------
public void yuns()
{
double a2;//运算数1
double b2;//运算数2
String c=fh;// 运算符
double jg2=0 ;//结果
if (cequals(""))
{
//Systemoutprintln("请输入运算符");
jg_TextFieldsetText("请输入运算符");
}
else
{
Systemoutprintln("str1:"+str1);//调试时 使 用
Systemoutprintln("str2:"+str2);//调试时 使 用
Systemoutprintln("运算符:"+fh);//调试时 使 用
if (str1equals("")) //字符串 "" 转换成double型数据时 会出错 所以手工转
str1="00";
if (str2equals(""))
str2="00";
a2=DoublevalueOf(str1)doubleValue();
b2=DoublevalueOf(str2)doubleValue();
Systemoutprintln("double型的a2:"+a2); //调试时 使 用
Systemoutprintln("double型的b2:"+b2); //调试时 使 用
if (cequals("+"))
{
jg2=a2+b2;
}
if (cequals("-"))
{
jg2=a2-b2;
}
if (cequals(""))
{
jg2=a2b2;
}
if (cequals("/"))
{
if(b2==0)
{
jg2=0;//0000000000000 by 0 cu!
}
else
{
jg2=a2/b2;
}
}
Systemoutprintln("double型a2"+fh+"b2结果:"+jg2);
Systemoutprintln();
jg=((new Double(jg2))toString());
jg_TextFieldsetText(jg);
}
}
}
public class CalculatorA {
private JFrame jf;
private JButton[] jbs;
private JTextField jtf;
private JButton clear;
private double num1,num2,jieguo;
private char c;
/
构造方法实例化属性
/
public CalculatorA(){
jf=new JFrame("我的计算器v10"); //定义窗口的title
jtf=new JTextField(20);//定义文本域 也就是计算器的输入和现实区域
clear=new JButton("clear");// 定义按钮
jbs=new JButton[16];//定义按钮数组
String str="123+456-7890/=";//此处用来批量创建数字和元素符号。
for(int i=0; i<strlength(); i++){//批量赋值。这样做使得定义按钮方便很多否则,你需要一个按钮一个按钮像上面的"clear"那样的定义
jbs[i]=new JButton(strcharAt(i)+"");
}
init();
addEventHandler();
// setFont();
// setColor();
showMe();
}
/
布局图形界面
/
public void init(){
// jfsetLayout(manager)
JPanel jp1=new JPanel();//定义面板,用来容纳上面的按钮文本域等组件
jp1add(jtf);//将 文本域 让如面板中
JPanel jp2=new JPanel();//定义面板,用来容纳上面的按钮文本域等组件
jp2setLayout(new GridLayout(4,4));//定义网格布局,类似html 的table一个4X4的格子,然后将计算的按钮放到这个面板中
for(int i=0; i<16; i++){
jp2add(jbs[i]);
}
JPanel jp3=new JPanel();//定义面板,用来容纳上面的按钮文本域等组件
jp3add(clear);//将 清除按钮 让如面板中
jfadd(jp1,BorderLayoutNORTH);//将显示数据面板,使用边框布局,放置最顶端。
jfadd(jp2,BorderLayoutCENTER);//将显示计算按钮面板,使用边框布局,放置中间。
jfadd(jp3,BorderLayoutSOUTH);//将显示清除按钮面板,使用边框布局,放置最底端。
}
public void setFont(){
}
public void setColor(){
}
public void addEventHandler(){//创建监听事件,用来监听每一个按钮,当点击后需要触发什么事件。
ActionListener lis=new ActionListener(){
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
JButton jb=(JButton)egetSource();//获取事件源
// String key=(String)egetActionCommand();
String str =jbgetText()trim();//把字符串的首尾空格去掉!
// String str2=egetActionCommand()trim();//返回事件源的文本内容
if("0123456789"indexOf(str)!=-1){//如果是数字或点号
jtfsetText(jtfgetText()+str);//设置显示文本域,也就是你点击数字按钮,在显示文本域显示出你点击的值。
return;
}
if("+-/"indexOf(str)!=-1){//当点击运算按钮触发的事件
num1=DoubleparseDouble(jtfgetText());//获取文本域的值并转换类型并暂时保存起来。
jtfsetText("");
c=strcharAt(0);
jtfsetText("");
return ;
}
if(strequals("=")){//根据点击的按钮式"="号执行结算结果
num2=DoubleparseDouble(jtfgetText());
// jtfsetText("");
switch(c){
case '+': jieguo=num1+num2;break;
case '-': jieguo=num1-num2;break;
case '': jieguo=num1num2; break;
case '/': jieguo=num1/num2;break;
}
jtfsetText(DoubletoString(jieguo)); //返回结算结果到显示文本域
return;
}
if(egetActionCommand()equals("clear")){
jtfsetText("");//清空显示文本域
return;
}
}
};
for(int i=0; i<jbslength; i++){
//为每个按钮加上监听类
jbs[i]addActionListener(lis);
}
clearaddActionListener(lis);
}
public void showMe(){
jfpack();//调整此窗口的大小,以适合其子组件的首选大小和布局。
jfsetVisible(true);//设置窗口可见
jfsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);//设置程序的退出按钮,退出即同时停止程序
}
public static void main(String[] args){//启动程序的入口
new CalculatorA();
}
}
这代码注释写的太累人了。小窗口费劲。给加点分吧。
import javaawtContainer;
import javaawtGridLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaawteventFocusAdapter;
import javaawteventFocusEvent;
import javasqlDate;
import javautilCalendar;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJTextField;
public class ZuJin extends JFrame {
/
(结束日期-开始日期)÷30×月租金+业务费用+其他费用=总费用
〔(结束日期-开始日期)÷30×月租金+业务费用+其他费用〕÷合租人员=平均费用
需要d出一个租金计算器对话框 分为租金计算信息与租金计算结果两部分
/
public ZuJin(){
Container c=getContentPane();
csetLayout(new GridLayout(5, 4));
JLabel j1=new JLabel("开始日期");
cadd(j1);
JTextField jt1=new JTextField(10);
cadd(jt1);
JLabel j2=new JLabel("结束日期");
cadd(j2);
JTextField jt2=new JTextField("");
cadd(jt2);
JLabel j3=new JLabel("月租金(元)");
cadd(j3);
JTextField jt3=new JTextField(5);
cadd(jt3);
JLabel j4=new JLabel("业务费(元)");
cadd(j4);
JTextField jt4=new JTextField(5);
cadd(jt4);
JLabel j5=new JLabel("其他费用(元)");
cadd(j5);
JTextField jt5=new JTextField(5);
cadd(jt5);
JLabel j6=new JLabel("合租人员数量");
cadd(j6);
JTextField jt6=new JTextField(3);
cadd(jt6);
JLabel j7=new JLabel("总费用(元)");
cadd(j7);
JTextField jt7=new JTextField(5);
jt7setEditable(false);
cadd(jt7);
JLabel j8=new JLabel("平均费用(元)");
cadd(j8);
JTextField jt8=new JTextField(5);
jt8setEditable(false);
cadd(jt8);
JButton jb1=new JButton("计算");
cadd(jb1);
jt1addFocusListener(new FocusAdapter()
{
@Override
public void focusGained(FocusEvent e)
{
if (jt1getText()equals("格式为:0000-00-00")) {
jt1setText("");
}
}
@Override
public void focusLost(FocusEvent e)
{
if (jt1getText()equals("")) {
jt1setText("格式为:0000-00-00");
}
}
});
jt2addFocusListener(new FocusAdapter()
{
@Override
public void focusGained(FocusEvent e)
{
if (jt2getText()equals("格式为:0000-00-00")) {
jt2setText("");
}
}
@Override
public void focusLost(FocusEvent e)
{
if (jt2getText()equals("")) {
jt2setText("格式为:0000-00-00");
}
}
});
jb1addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Date d1=DatevalueOf(jt1getText());//开始日期
Date d2=DatevalueOf(jt2getText());//结束日期
Calendar c1=CalendargetInstance();
c1setTime(d1);
Calendar c2=CalendargetInstance();
c2setTime(d2);
int day1=c1get(CalendarDAY_OF_YEAR);
int day2=c2get(CalendarDAY_OF_YEAR);
int days=day2-day1;
double money1=DoublevalueOf(jt3getText());//月租金
double money2=DoublevalueOf(jt4getText());//业务费
double money3=DoublevalueOf(jt5getText());//其他费用
int man=IntegervalueOf(jt6getText());//人数
double money4=days/30money1+money2+money3;
double money5=00;
if (man!=0) {
money5=money4/man;
}
else {
money5=money4;
}
jt7setText(StringvalueOf(money4));
jt8setText(StringvalueOf(money5));
}
});
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
setBounds(400,400,500,300);
setVisible(true);
setTitle("租金计算器");
}
public static void main(String[] args) {
ZuJin zj=new ZuJin();
}
}
丑是丑了点 用还是可以用的。
java EE是java企业级开发平台的意思,实在是看不出跟计算器这种小程序有什么关联。不知道楼主要找的是不是这个。
package ex1;
import javaawtBorderLayout;
import javaawtColor;
import javaawtDimension;
import javaawtFont;
import javaawtGridLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javatextDecimalFormat;
import javaxswingBorderFactory;
import javaxswingButtonGroup;
import javaxswingJButton;
import javaxswingJCheckBoxMenuItem;
import javaxswingJFrame;
import javaxswingJMenu;
import javaxswingJMenuBar;
import javaxswingJMenuItem;
import javaxswingJPanel;
import javaxswingJRadioButtonMenuItem;
import javaxswingJTextField;
public class Calcutor extends JFrame {
private JTextField tf;
private JPanel panel1, panel2, panel3, panel4;
private JMenuBar myBar;
private JMenu menu1, menu2, menu3;
private JMenuItem editItem1, editItem2, help1, help2, help3;
private JRadioButtonMenuItem seeItem1, seeItem2;//单选框
private JCheckBoxMenuItem seeItem3;//复选框
private ButtonGroup bgb;
private String back;
private boolean IfResult = true, flag = false;
private String oper = "=";
private double result = 0;
private Num numActionListener;
private DecimalFormat df;
public Calcutor(){
super("科学计算器");//设置标题栏
df = new DecimalFormat("#####");//保留四位小数
thissetLayout(new BorderLayout(10, 5));
panel1 = new JPanel(new GridLayout(1, 3, 10, 10));
panel2 = new JPanel(new GridLayout(5, 6, 5, 5));//5行6列
panel3 = new JPanel(new GridLayout(5, 1, 5, 5));
panel4 = new JPanel(new BorderLayout(5, 5));
/
菜单栏
/
myBar = new JMenuBar();
menu1 = new JMenu("编辑(E)");
menu2 = new JMenu("查看(V)");
menu3 = new JMenu("帮助(H)");
menu1setFont(new Font("宋体", FontPLAIN, 12));
menu2setFont(new Font("宋体", FontPLAIN, 12));
menu3setFont(new Font("宋体", FontPLAIN, 12));
/
编辑栏
/
editItem1 = new JMenuItem("复制(C) Ctrl+C");
editItem2 = new JMenuItem("粘贴(P) Ctrl+V");
editItem1setFont(new Font("宋体",FontPLAIN,12));
editItem2setFont(new Font("宋体",FontPLAIN,12));
/
查看栏
/
seeItem1 = new JRadioButtonMenuItem("科学型(T)");
seeItem2 = new JRadioButtonMenuItem("标准型(S)");
seeItem3 = new JCheckBoxMenuItem("数字分组(I)");
seeItem1setFont(new Font("宋体",FontPLAIN,12));
seeItem2setFont(new Font("宋体",FontPLAIN,12));
seeItem3setFont(new Font("宋体",FontPLAIN,12));
/
帮助栏
/
help1 = new JMenuItem("帮助主题(H)");
help2 = new JMenuItem("关于计算器(A)");
help1setFont(new Font("宋体",FontPLAIN,12));
help2setFont(new Font("宋体",FontPLAIN,12));
bgb = new ButtonGroup();//选项组
menu1add(editItem1);
menu1add(editItem2);
menu2add(seeItem1);
menu2add(seeItem2);
menu2addSeparator();//添加一条分割线
menu2add(seeItem3);
menu3add(help1);
menu3addSeparator();//添加一条分割线
menu3add(help2);
myBaradd(menu1);
myBaradd(menu2);
myBaradd(menu3);
thissetJMenuBar(myBar);
numActionListener = new Num();//实现数字监听
/
文本域,即为计算器的屏幕显示区域
/
tf = new JTextField();
tfsetEditable(false);//文本区域不可编辑
tfsetBackground(Colorwhite);//文本区域的背景色
tfsetHorizontalAlignment(JTextFieldRIGHT);//文字右对齐
tfsetText("0");
tfsetBorder(BorderFactorycreateLoweredBevelBorder());
init();//对计算器进行初始化
}
/
初始化 *** 作
添加按钮
/
private void init(){
addButton(panel1, "Backspace", new Clear(), Colorred);
addButton(panel1, "CE", new Clear(), Colorred);
addButton(panel1, "C", new Clear(), Colorred);
addButton(panel2, "1/x", new Signs(), Colormagenta);
addButton(panel2, "log", new Signs(), Colormagenta);
addButton(panel2, "7", numActionListener, Colorblue);
addButton(panel2, "8", numActionListener, Colorblue);
addButton(panel2, "9", numActionListener, Colorblue);
addButton(panel2, "÷", new Signs(), Colorred);
addButton(panel2, "n!", new Signs(), Colormagenta);
addButton(panel2, "sqrt", new Signs(), Colormagenta);
addButton(panel2, "4", numActionListener, Colorblue);
addButton(panel2, "5", numActionListener, Colorblue);
addButton(panel2, "6", numActionListener, Colorblue);
addButton(panel2, "×", new Signs(), Colorred);
addButton(panel2, "sin", new Signs(), Colormagenta);
addButton(panel2, "x^2", new Signs(), Colormagenta);
addButton(panel2, "1", numActionListener, Colorblue);
addButton(panel2, "2", numActionListener, Colorblue);
addButton(panel2, "3", numActionListener, Colorblue);
addButton(panel2, "-", new Signs(), Colorred);
addButton(panel2, "cos", new Signs(), Colormagenta);
addButton(panel2, "x^3", new Signs(), Colormagenta);
addButton(panel2, "0", numActionListener, Colorblue);
addButton(panel2, "-/+", new Clear(), Colorblue);
addButton(panel2, "", new Dot(), Colorblue);
addButton(panel2, "+", new Signs(), Colorred);
addButton(panel2, "tan", new Signs(), Colormagenta);
addButton(panel2, "%", new Signs(), Colormagenta);
addButton(panel2, "π", numActionListener, Colororange);
addButton(panel2, "e", numActionListener, Colororange);
addButton(panel2, "′″", new Signs(), Colororange);
addButton(panel2, "=", new Signs(), Colorred);
JButton btns = new JButton("计算器");
btnssetBorder(BorderFactorycreateLoweredBevelBorder());
btnssetEnabled(false);//按钮不可 *** 作
btnssetPreferredSize(new Dimension(20, 20));
panel3add(btns);//加入按钮
addButton(panel3, "MC", null, Colorred);
addButton(panel3, "MR", null, Colorred);
addButton(panel3, "MS", null, Colorred);
addButton(panel3, "M+", null, Colorred);
panel4add(panel1, BorderLayoutNORTH);
panel4add(panel2, BorderLayoutCENTER);
thisadd(tf, BorderLayoutNORTH);
thisadd(panel3, BorderLayoutWEST);
thisadd(panel4);
pack();
thissetResizable(false);//窗口不可改变大小
thissetLocation(300, 200);
thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
/
统一设置按钮的的使用方式
@param panel
@param name
@param action
@param color
/
private void addButton(JPanel panel, String name, ActionListener action, Color color){
JButton bt = new JButton(name);
paneladd(bt);//在面板上增加按钮
btsetForeground(color);//设置前景(字体)颜色
btaddActionListener(action);//增加监听事件
}
/
计算器的基础 *** 作(+ - × ÷)
@param x
/
private void getResult (double x){
if(oper == "+"){result += x;}
else if(oper == "-"){result -= x;}
else if(oper == "×"){result = x;}
else if(oper == "÷"){result /= x;}
else if(oper == "="){result = x;}
tfsetText(dfformat(result));
}
/
运算符号的事件监听
/
class Signs implements ActionListener{
public void actionPerformed(ActionEvent e) {
/
用ActionEvent对象的getActionCommand()方法
取得与引发事件对象相关的字符串
/
String str = egetActionCommand();
/ sqrt求平方根 /
if(strequals("sqrt")){
double i = DoubleparseDouble(tfgetText());
if(i>=0){
/
StringvalueOf() 转换为字符串
dfformat() 按要求保留四位小数
Mathsqrt() 求算数平方根
/
tfsetText(StringvalueOf(dfformat(Mathsqrt(i))));
}
else{
tfsetText("负数不能开平方根");
}
}
/ log求常用对数 /
else if(strequals("log")){
double i = DoubleparseDouble(tfgetText());
if(i>0){
tfsetText(StringvalueOf(dfformat(Mathlog(i))));
}else{
tfsetText("负数不能求对数");
}
}
/ %求百分比 /
else if(strequals("%")){
tfsetText(dfformat(DoubleparseDouble(tfgetText()) / 100));
}
/ 1/x求倒数 /
else if(strequals("1/x")){
if(DoubleparseDouble(tfgetText()) == 0){
tfsetText("除数不能为零");
}else{
tfsetText(dfformat(1 / DoubleparseDouble(tfgetText())));
}
}
/ sin求正弦函数 /
else if(strequals("sin")){
double i = DoubleparseDouble(tfgetText());
tfsetText(StringvalueOf(dfformat(Mathsin(i))));
}
/ cos求余弦函数 /
else if(strequals("cos")){
double i = DoubleparseDouble(tfgetText());
tfsetText(StringvalueOf(dfformat(Mathcos(i))));
}
/ tan求正切函数 /
else if(strequals("tan")){
double i = DoubleparseDouble(tfgetText());
tfsetText(StringvalueOf(dfformat(Mathtan(i))));
}
/ n!求阶乘 /
else if(strequals("n!")){
double i = DoubleparseDouble(tfgetText());
if((i%2==0)||(i%2==1))//判断为整数放进行阶乘 *** 作
{
int j = (int)i;//强制类型转换
int result=1;
for(int k=1;k<=j;k++)
result = k;
tfsetText(StringvalueOf(result));
}
else
{
tfsetText("无法进行阶乘");
}
}
/ x^2求平方 /
else if(strequals("x^2")){
double i = DoubleparseDouble(tfgetText());
tfsetText(StringvalueOf(dfformat(ii)));
}
/ x^3求立方 /
else if(strequals("x^3")){
double i = DoubleparseDouble(tfgetText());
tfsetText(StringvalueOf(dfformat(iii)));
}
/ ′″角度转换 /
/
将角度值转换成弧度值,方便三角函数的计算
/
else if(strequals("′″")){
double i = DoubleparseDouble(tfgetText());
tfsetText(StringvalueOf(i/180MathPI));
}
else{
if(flag){
IfResult = false;
}
if(IfResult){
oper = str;
}else{
getResult(DoubleparseDouble(tfgetText()));
oper = str;
IfResult = true;
}
}
}
}
/
清除按钮的事件监听
/
class Clear implements ActionListener{
public void actionPerformed(ActionEvent e) {
/
用ActionEvent对象的getActionCommand()方法
取得与引发事件对象相关的字符串
/
String str = egetActionCommand();
if(str == "C"){
tfsetText("0");
IfResult = true;
result = 0;
}else if(str == "-/+"){
double i = 0 - DoubleparseDouble(tfgetText()trim());
tfsetText(dfformat(i));
}else if(str == "Backspace"){
if(DoubleparseDouble(tfgetText()) > 0){
if(tfgetText()length() > 1){
tfsetText(tfgetText()substring(0, tfgetText()length() - 1));
//使用退格删除最后一位字符
}else{
tfsetText("0");
IfResult = true;
}
}else{
if(tfgetText()length() > 2){
tfsetText(tfgetText()substring(0, tfgetText()length() - 1));
}else{
tfsetText("0");
IfResult = true;
}
}
}else if(str == "CE"){
tfsetText("0");
IfResult = true;
}
}
}
/
数字输入的事件监听
/
class Num implements ActionListener{
public void actionPerformed(ActionEvent e) {
String str = egetActionCommand();
if(IfResult){
tfsetText("");
IfResult = false;
}
if(str=="π")
{
tfsetText(StringvalueOf(MathPI));
}
else if(str=="e")
{
tfsetText(StringvalueOf(MathE));
}
else{
tfsetText(tfgetText()trim() + str);
if(tfgetText()equals("0")){
tfsetText("0");
IfResult = true;
flag = true;
}
}
}
}
/
小数点的事件监听
/
class Dot implements ActionListener{
public void actionPerformed(ActionEvent e) {
IfResult = false;
if(tfgetText()trim()indexOf("") == -1){
tfsetText(tfgetText() + "");
}
}
}
/
main方法
/
public static void main(String[] args) {
new Calcutor()setVisible(true);
}
}
这是java中类的成员访问权限问题。类的成员访问权限一共四种:public、protected、缺省的、private。private成员只能在类的内部访问使用,在其他类和其他包中都访问不到。如果我们要访问private成员变量,就给它写一个set(修改值)和get(取值)方法,并且用public修饰符。这样我们就可以在类的外部 *** 纵这些私有成员变量。这也体现了java中的封装思想。举例:电视机上面一般就几个按钮,如开机、关机、换频道等等,但是“开机”具体由电视机怎么实现的,你不需要知道,因为电视厂商把它封装好了,你只管开机就可以了。
以上就是关于求一个简单的JAVA小程序,要有图形界面。全部的内容,包括:求一个简单的JAVA小程序,要有图形界面。、请高手做一个java编程题,做一个计算器(要求可以计算),用swing做,要求有JFrame、JButton。要原创哦!、求java简单计算器源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)