计算机软件实习记录(第二周)——事件监听与堆栈部分操作的学习
事件监听
⼀个事件模型中有三个对象:事件源,事件,以及监听程序。
一般使用步骤:
1. 新建⼀个组件(如JButton)。
2. 将该组件添加到相应的⾯板(如JFrame)。
3. 注册监听器以监听事件源产⽣的事件(如通过ActionListener来响应⽤户点击按钮)。
4. 定义处理事件的⽅法(如在ActionListener中的actionPerformed中定义相应⽅法)。
(jf(Jframe),jp(JPanel)的创建已省略)
给jjb2添加一个事件监听,如果按钮jjb2被点击,往文本域jb1里面添加“()”,if下面的代码可以替换成其他的功能
JTextArea jb1 = new JTextArea();
Button jb2 = new Button("(");
jb2.setBounds(20,130,50,50);
jb2.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("(")){
jb1.append("()");
}
}
});
jp.add(jb1);//往jp里面添加文本域
jb1.setLocation(20,10);
jb1.setSize(350,50);
jp.add(jb2);//往jp里面添加按钮
例如把上面代码中的jb1.append("()");
换成jb1.setText("");
就可以实现计算器中C按钮的功能,既清除文本域的所有内容,
而等号的功能就比较复杂,其中的功能(把第一个文本框的算式复制到第二个文本区域内并且在第一个文本区域中显示计算的结果)就需要用到堆栈了。
堆栈
头结点和栈中元素的个数private Node head; private int N;
结点的构造函数:
public class Node{
T data;
Node next;
public Node(T data,Node next){
this.data=data;
this.next=next;
}
}
堆栈的构造方法:
public Stack(){
this.head=new Node(null,null);
this.N=0;
}
判断栈中元素个数是否为0
public boolean isEmpty(){
return N==0;
}
获取栈中元素个数
public boolean isEmpty(){
return N==0;
}
把元素压入栈
public void push(T t){
Node first=head.next;
Node newNode = new Node(t, null);
head.next=newNode;
newNode.next=first;
N++;
}