博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java的栈图形演示
阅读量:6671 次
发布时间:2019-06-25

本文共 3075 字,大约阅读时间需要 10 分钟。

import java.awt.*;import javax.swing.*;import java.awt.event.*;/*指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件(比如 Button)生成此高级别事件。事件被传递给每一个 ActionListener 对象,这些对象是使用组件的 addActionListener 方法注册的,用以接收这类事件。 所以在给TextField类添加 ActionListener 类型的监听器时就会失败!****下面还有XXXListener和XXXAdapter的用法,相信你会喜欢上XXXAdapter的用法*/public class stackDemo extends MouseAdapter{   JFrame fr=new JFrame("StackDemo");//对话框   JPanel pan= new JPanel();//菜单面板   JPanel panStack = new JPanel();   JButton pushBtn, popBtn, peekBtn;   JTextField tf= new JTextField("整数", 4);   JButton stackBtn[]= new JButton[10];      JPanel panStackPointerLabel= new JPanel();   JLabel stackPointerLabel = new JLabel("<-top");   JPanel panRet= new JPanel();      JTextField tfRet= new JTextField("操作结果!");   int top;      public stackDemo(){      fr.setSize(420,500);      fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      fr.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));      pan.setPreferredSize(new Dimension(400, 50));      pan.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));      panStack.setPreferredSize(new Dimension(80, 350));//设置栈面板大小      panStack.setBackground(Color.yellow);      pan.setBackground(Color.blue);      pan.add(new JLabel("操作菜单:"));      pan.add(pushBtn=new JButton("进栈"));      pushBtn.addMouseListener(new pushAction());      pan.add(popBtn=new JButton("出栈"));      popBtn.addMouseListener(new popAction());      pan.add(peekBtn=new JButton("栈顶元素"));            tf.addMouseListener(this);      pan.add(tf);                for(int i=0; i<10; ++i){         stackBtn[i]=new JButton("   ");         panStack.add(stackBtn[i]);      }      fr.add(pan);      fr.add(panStack);      panStackPointerLabel.setLayout(null);      panStackPointerLabel.setPreferredSize(new Dimension(80, 350));//设置指针面板的大小      panStackPointerLabel.setBackground(Color.LIGHT_GRAY);      stackPointerLabel.setFont(new Font("华文行楷", Font.BOLD, 20));      panStackPointerLabel.add(stackPointerLabel);      fr.add(panStackPointerLabel);      panRet.setLayout(new FlowLayout(FlowLayout.LEFT));      panRet.setBackground(Color.red);      panRet.setPreferredSize(new Dimension(400, 50));            tfRet.setEditable(false);//不能不编辑      panRet.add(tfRet);//操作结果面板      fr.add(panRet);      fr.setVisible(true);      stackPointerLabel.setBounds(0, stackBtn[9].getLocation().y, 50, 50);//设置栈顶指针位置      top=9;   }   public void mouseClicked(MouseEvent e){       tf.selectAll();//鼠标单击时选中全部文本   }      //push 按钮监听器   class pushAction implements MouseListener{       public void mouseClicked(MouseEvent e){          String text;                    if((text=tf.getText())!="   "){              for(int i=0; i
=9){ tfRet.setText("栈底溢出!"); return ; } ++top; Point pt=stackBtn[top].getLocation(); text=stackBtn[top].getText(); tfRet.setText("出栈值" + text); stackBtn[top].setText(" "); stackPointerLabel.setBounds(0, pt.y, 50, 50); } } public static void main(String args[]){ stackDemo mySstackDemo = new stackDemo(); }}

转载地址:http://qimxo.baihongyu.com/

你可能感兴趣的文章
Yesod - 数据库 (9)
查看>>
redis多数据库
查看>>
RHCE认证培训+考试七天实录(五)
查看>>
ip nat translation (timeout)
查看>>
创建外网 ext_net - 每天5分钟玩转 OpenStack(104)
查看>>
api数据分页的两种方式的比较
查看>>
Python OpenCV学习笔记之:图像直方图反向投影
查看>>
布隆过滤器:实现代码
查看>>
使用Spring MVC开发RESTful API
查看>>
js复制input到剪切板(ie内核浏览器)单个input简洁版
查看>>
mysql.sock丢失解决
查看>>
BISO
查看>>
好程序员分享http的keep-alive和tcp的keep-alive区别
查看>>
tomcat调优方案
查看>>
Cisco2950 2960 交换机基本配置命令
查看>>
IE打印控件
查看>>
Java简单实现固定长度队列
查看>>
jenkins学习
查看>>
Oracle中两表关联更新
查看>>
定制 Kali Linux Live USB 的另一种方法
查看>>