自学的JAVA,第一次写窗口程序,简单的整数计算器的程序。

灬牙牙先生 2014-02-26 02:19:40
心里没底,虽然能用,但是不知道写的怎么样,自己胡弄的,希望各位前辈能给点建议。
第一次写出来窗口话的程序。。。
非常感谢各位前辈提意见。


package 窗口化;
import java.awt.*;
import javax.swing.*;
public class 计算器 {
public static void main(String[] args) {
numberButton frame=new numberButton();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(310,285);
frame.setLocationRelativeTo(null);
frame.setTitle("计算器");
frame.setVisible(true);
}

}




package 窗口化;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class numberButton extends JFrame{
int count=0;
int a=0;
int b=0;
char cr=0;
JButton[] jbt=new JButton[10];
JTextField jtf=new JTextField(14);
public numberButton(){
JPanel p1=new JPanel(new GridLayout(4,4,4,4));
jbt[0]=new JButton("0");
JButton jbtPoint=new JButton(".");
JButton jbtEqualitySign=new JButton("=");
JButton jbtPlusSign=new JButton("+");
JButton jbtMinusSign=new JButton("-");
JButton jbtTimesSign=new JButton("*");
JButton jbtDivisionSign=new JButton("/");
JButton jbtClear=new JButton("C");
jbt[0].setFont(new java.awt.Font("微软雅黑", 0, 20));
jbtPoint.setFont(new java.awt.Font("微软雅黑", 0, 20));
jbtEqualitySign.setFont(new java.awt.Font("微软雅黑", 0, 20));
jbtPlusSign.setFont(new java.awt.Font("微软雅黑", 0, 20));
jbtMinusSign.setFont(new java.awt.Font("微软雅黑", 0, 20));
jbtTimesSign.setFont(new java.awt.Font("微软雅黑", 0, 20));
jbtDivisionSign.setFont(new java.awt.Font("微软雅黑", 0, 20));
jbtClear.setFont(new java.awt.Font("微软雅黑", 0, 20));
for(int i=7;i>=1;i=i-3){
for(int j=i;j<i+3;j++){
jbt[j]=new JButton(""+j); //JButton的数组,0~9分别对应的jbt[0]~jbt[9]
p1.add(jbt[j]);
jbt[j].setFont(new java.awt.Font("微软雅黑", 0, 20));
}
}
jtf.setFont(new java.awt.Font("微软雅黑", 0, 20));
p1.add(jbt[0]);
p1.add(jbtPoint);
p1.add(jbtEqualitySign);
JPanel p2=new JPanel(new GridLayout(2,2,4,4));
p2.add(jbtPlusSign);
p2.add(jbtMinusSign);
p2.add(jbtTimesSign);
p2.add(jbtDivisionSign);
JPanel p3=new JPanel(new GridLayout(2,2,4,4));
p3.add(p2,BorderLayout.CENTER);
p3.add(jbtClear,BorderLayout.SOUTH);
JPanel p4=new JPanel(new FlowLayout(FlowLayout.LEFT,7,7));
p4.add(p1);
p4.add(p3);
JPanel p5=new JPanel(new FlowLayout(FlowLayout.LEFT,7,7));
p5.add(jtf);
p5.add(p4);
add(p5);
jbt[0].addActionListener(new JbtnumListener(0));
jbt[1].addActionListener(new JbtnumListener(1));
jbt[2].addActionListener(new JbtnumListener(2));
jbt[3].addActionListener(new JbtnumListener(3));
jbt[4].addActionListener(new JbtnumListener(4));
jbt[5].addActionListener(new JbtnumListener(5));
jbt[6].addActionListener(new JbtnumListener(6));
jbt[7].addActionListener(new JbtnumListener(7));
jbt[8].addActionListener(new JbtnumListener(8));
jbt[9].addActionListener(new JbtnumListener(9));
jbtPlusSign.addActionListener(new JbtSignListener('+'));
jbtMinusSign.addActionListener(new JbtSignListener('-'));
jbtTimesSign.addActionListener(new JbtSignListener('*'));
jbtDivisionSign.addActionListener(new JbtSignListener('/'));
jbtClear.addActionListener(new JbtClearListener());
jbtEqualitySign.addActionListener(new JbtESListener());
}
class JbtnumListener implements ActionListener{
int num;
JbtnumListener(int num){
this.num=num;
}
public void actionPerformed(ActionEvent e){

if(cr==0){
a=a*10+num;
jtf.setText(""+a);
}
else{
b=b*10+num;
jtf.setText(""+b);
}
count++;
}
}
class JbtSignListener implements ActionListener{
char cr0;
JbtSignListener(char cr0){
this.cr0=cr0;
}
public void actionPerformed(ActionEvent e){
cr=cr0;
jtf.setText(""+cr);
count=0;
b=0;
}
}
class JbtESListener implements ActionListener{
public void actionPerformed(ActionEvent e){
switch(cr){
case '+':a=a+b;break;
case '-':a=a-b;break;
case '*':a=a*b;break;
case '/':a=a/b;break;
}
jtf.setText(String.format("%d", a));
}
}
class JbtClearListener implements ActionListener{
public void actionPerformed(ActionEvent e){
jtf.setText("");
cr=0;
a=0;
b=0;
count=0;
}
}
}
...全文
1313 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hh_ll 2014-02-28
  • 打赏
  • 举报
回复
恭喜呀,做出来就挺不错了
灬牙牙先生 2014-02-26
  • 打赏
  • 举报
回复
引用 7 楼 dongzeviva 的回复:
引用 6 楼 rao3324180 的回复:
引用 5 楼 dongzeviva 的回复:
[quote=引用 4 楼 sarindu 的回复:] [quote=引用 3 楼 dongzeviva 的回复:] 纯界面,计算器的算法实现无意义。放弃Swing吧,阿弥陀佛
为什么呢。不懂。自学的。两眼黑。。
java做界面的几乎没了,太难看了,所以去看看java能干什么,换个方向
java除了web,手机. 还能做什么[/quote]这两个还不够你折腾的啊[/quote]嗯嗯~知道了~我就是特别希望做出来个窗口的东西~~第一次做~~~
  • 打赏
  • 举报
回复
引用 6 楼 rao3324180 的回复:
引用 5 楼 dongzeviva 的回复:
引用 4 楼 sarindu 的回复:
[quote=引用 3 楼 dongzeviva 的回复:] 纯界面,计算器的算法实现无意义。放弃Swing吧,阿弥陀佛
为什么呢。不懂。自学的。两眼黑。。
java做界面的几乎没了,太难看了,所以去看看java能干什么,换个方向
java除了web,手机. 还能做什么[/quote]这两个还不够你折腾的啊
rao3324180 2014-02-26
  • 打赏
  • 举报
回复
引用 5 楼 dongzeviva 的回复:
引用 4 楼 sarindu 的回复:
引用 3 楼 dongzeviva 的回复:
纯界面,计算器的算法实现无意义。放弃Swing吧,阿弥陀佛
为什么呢。不懂。自学的。两眼黑。。
java做界面的几乎没了,太难看了,所以去看看java能干什么,换个方向
java除了web,手机. 还能做什么
  • 打赏
  • 举报
回复
引用 4 楼 sarindu 的回复:
引用 3 楼 dongzeviva 的回复:
纯界面,计算器的算法实现无意义。放弃Swing吧,阿弥陀佛
为什么呢。不懂。自学的。两眼黑。。
java做界面的几乎没了,太难看了,所以去看看java能干什么,换个方向
灬牙牙先生 2014-02-26
  • 打赏
  • 举报
回复
引用 3 楼 dongzeviva 的回复:
纯界面,计算器的算法实现无意义。放弃Swing吧,阿弥陀佛
为什么呢。不懂。自学的。两眼黑。。
  • 打赏
  • 举报
回复
纯界面,计算器的算法实现无意义。放弃Swing吧,阿弥陀佛
灬牙牙先生 2014-02-26
  • 打赏
  • 举报
回复
引用 1 楼 xiesisi3 的回复:
不要用中文做包名和类名。。。。。。。。。。。。。。。。。。。
嗯嗯~谢谢提醒~代码有什么不好的地方呢~
xiesisi3 2014-02-26
  • 打赏
  • 举报
回复
不要用中文做包名和类名。。。。。。。。。。。。。。。。。。。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧