第一次写关于技术的东西,还有就是在下还是菜鸟一个,无法写出高深的技术,只能从我个人角度觉得值得注意的角度谈谈拙见。
我想谈谈这次做简易计算器窗口界面的体会,下面是我用java写的一个简易计算器的部分代码:
--------------------------------------------------------------------------
public class CaculationDemo extends JFrame implements KeyListener //继承键盘监听器 形成自监听,继承JFrame,主框架
{
private Container content; //声明容器类
private JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0; //声明需按钮
private JButton bAdd,bSbt,bMul,bDvd,bSqrt,bPer,b1x,bEqual;
private JButton bzf,bPoint,bC,bCE,bBs;
private JPanel pNumber,pLetter; //声明面板(中间容器)
private JTextArea ta; //声明文本区域
private double first = 0,second = 0; //声明声明运算数first和second
private StringBuffer str;
int j = 0, k = 4; //j控制 按(+ - * /)后是否进行运算;k代表按下那个运算符(+ - * /)
CaculationDemo()
{
super("帅哥计算器");content = getContentPane(); //实例化容器content并设置管理器
content.setLayout(new BorderLayout());
pNumber = new JPanel();
pLetter = new JPanel(); //实例化面板pNumber, pLetter
ta = new JTextArea(1,20); //实例化文本区域并设置
ta.setEditable(false);
ta.setColumns(20);
ta.setBounds(15,10,260,30);
ta.setText("0");
ta.addKeyListener(this);
Font f1 = new Font("宋体",Font.PLAIN,15); //声明并实例化Fon,用于设置按钮字体
Font f2 = new Font("宋体",Font.PLAIN,10);
str=new StringBuffer(); //实例化一个字符串
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。//将数字键及".","+/-"等键添加到面板pNumber中并设置在主框架的位置和小
pNumber.setLayout(new GridLayout(4,5,4,4));
pNumber.add(b7); pNumber.add(b8);
pNumber.add(b9); pNumber.add(bDvd);
pNumber.add(bSqrt); pNumber.add(b4);
pNumber.add(b5); pNumber.add(b6);
pNumber.add(bMul); pNumber.add(bPer);
pNumber.add(b1); pNumber.add(b2);
pNumber.add(b3); pNumber.add(bSbt);
pNumber.add(b1x); pNumber.add(b0);
pNumber.add(bzf); pNumber.add(bPoint);
pNumber.add(bAdd); pNumber.add(bEqual);
pNumber.setBounds(0,95,290,200);
//将键C,CE,Backspace添加到面板pLetter并设置在主框架的位置和大小
pLetter.setLayout(new GridLayout(1,3,5,5));
pLetter.add(bBs);pLetter.add(bCE); pLetter.add(bC);
pLetter.setBounds(0,47,290,43);
//设置主框架以及添加他,pNumber,pLetter
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
content.setLayout(null);content.add(ta);content.add(pLetter);content.add(pNumber);
setSize(290,325); setVisible(true);
}
public static void main(String args[])
{
CaculationDemo cd = new CaculationDemo();
}
--------------------------------------------------------------------------
1要写好一个界面,必须要先对你所要实现的界面有一个总体布局,如界面的大小,以及可否改变大小,界面上有什么控件(比如按钮,标签,图标等),以及各控件的位置,大小(以及界面大小变化的时各控件怎样变化)等: 比如一个简易计算器:界面一般为长方形,界面上比较简单,就只有一些按钮(数字键,还有符号键),一个显示所按按钮的文本控件(如上图所示)。
2按照界面上控件的功能或者某些属性以及在界面的位置,随界面变化而所做的反应决定控件需要怎么组合,是放在其他控件上,还是直接放在顶层容器上,或者放在中间容器如JPanel,以及所放组件上的布局管理器,如FlowLayout,或者null(利用setSize()等函数)
如我上面编写的计算器,我把窗口上面的控件分成三个模块:1、显示的文本控件,位于最顶层,直接放在窗口最上面上; 2、清除键(C),删除键(CE,BackSpace)三个键分层一个模块,放在中间容器pLetter上,再放在窗口中间; 3、将数字键,运算键分成一个模块,放在中间容器pNumber上,放在窗口最下面。在2,3模块中,为了让个按键大小一致,我都采用了网格管理器GridLayout。然后通过函数setBound将三个模板放在上,中,下的位置(当然这其中就要计算好setBound()函数里所需的参数,这样才能设置出我们想要的界面。)
3便是在实现界面得嘞里定义所需的按键以及容器(有时包括顶层容器,一般通过直接继承顶层容器就行了),如下面面代码:
private Container content; //声明容器类
private JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0; //声明需按钮
private JButton bAdd,bSbt,bMul,bDvd,bSqrt,bPer,b1x,bEqual;
private JButton bzf,bPoint,bC,bCE,bBs;
private JPanel pNumber,pLetter; //声明面板(中间容器)
private JTextArea ta;
--------------------------------------------------------------------------
然后便是在实例化各控件,以及他们直接的设置,放置问题(第一步和第二步讨论的,在JAVA有两种常用编程方式 ,一是在main方法里实现各控件实例化及实现界面,叫主式方法;第二种是,由于在实践应用中定义的类很多,且访问频繁,所以先在这个我们实现界面的类中的设计一个无参的构造方法,在它里面初始化中实现界面,然后在main只编写一条实例化主类语句 ,这种方法叫构造方法式,这种方法较之主方法式方便得多,所以一般建议使用第二种方法。 上面的代码中我就用了第二种方法:
public static void main(String args[])
{
CaculationDemo cd = new CaculationDemo();
}
-------------------------------------------------------------------------
到此,窗口界面完成了,当然上面我主要是讲做一个界面,并没有介绍实现具体功能(比如说按按钮要发生什么操作),这些需要涉及到具体我们所要实现的功能,以及监听器的应用。这个嘛,也很晚了,找个机会再介绍我这个帅哥计算器的算法,以及所运用到的鼠标监听器和键盘监听器等。。。。。。。。。。。。。。
菜鸟等级,请各位高手赐教,O(∩_∩)O哈哈~