java的栈图形演示
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<text.length(); ++i)
if(!Character.isDigit(text.charAt(i)))
return ;
}
if(top<0){
tfRet.setText("栈顶溢出!");
return ;
}
Point pt=stackBtn[top].getLocation();
stackBtn[top].setText(text);
tfRet.setText("进栈值" + text);
stackPointerLabel.setBounds(0, pt.y, 50, 50);
--top;
}
public void mouseDragged(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mousePressed(MouseEvent e){}
} //pop按钮监听器
class popAction extends MouseAdapter{
public void mouseClicked(MouseEvent e){
String text;
if(top>=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();
}
}
java的栈图形演示的更多相关文章
- JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- Java中的图形界面编程
前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...
- Java概述和项目演示
Java概述和项目演示 1. 软件开发学习方法 多敲 多思考 解决问题 技术文档阅读(中文,英文) 项目文档 多阅读源码 2. 计算机 简称电脑,执行一系列指令的电子设备 3. 硬件组成 输入设备:键 ...
- Java 技术栈
JAVA是一个面向对象的编程语言,由SUN公司的程序员所开发.它不仅吸收了C++的各种优点,而且还撇弃了C++中难以理解的概念,如多继承.指针等:因此JAVA语言具有功能强大且简单易用两个特征, JA ...
- JVM运行时数据区--Java虚拟机栈
虚拟机栈的背景 由于跨平台性的设计,java的指令都是根据栈来设计的.不同平台CPU架构不同,所以不能设计为基于寄存器的. 根据栈设计的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样 ...
- java技术栈:项目概述
学习使用java到现在也有三年多了,这三年基本是以项目驱动的方式学习,有好有坏,个人觉得好处在于,有一个清晰的目标让你解决,这会让你学习非常迅速有效.当然坏处就是片面,不成体系.这种学习方式在学校以小 ...
- Ninja:Java全栈Web开发框架-Ninja中文网
相信不少业界人士都还停留在SSh的时代 其实我想给大家推荐的一个轻量级框架那就是Ninja; Ninja是一个Java全栈Web开发框架,稳定.快速.非常高效. 商业价值 在你的下一个项目中,Ninj ...
- Java虚拟机栈和本地方法栈
Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java ...
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
随机推荐
- 【转】php Thread Safe(线程安全)和None Thread Safe(NTS,非 线程安全)之分
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍. ...
- swift-func(函数)
函数是一个组织在一起语句集合,以执行特定任务. Swift 函数类似于简单 C 函数以及复杂的 Objective C 语言函数. 它使我们能够通过函数调用内部的局部和全局参数值. 像其他任何语言一样 ...
- placeholder js简单实现
window.onload = function() { var input = document.getElementById("input"); input.onblur = ...
- Xml 建议优先使用属性
要点:建议优先选用属性的方式记录数据,除非还需要包容层级式的数据. 优点: 1. 可以完全覆盖关系型数据库的数据格式设计,利于交换. 2. 占用空间小.相当于 JSON 格式,不再有大量重复的节点名后 ...
- 20155315庄艺霖--对做中学的理解及对c语言和Java的看法
关于做中学的理解及技能训练的思考 在写这篇博客之前,我首先阅读了娄老师的博客,对做中学的概念很感兴趣.我们常说知识要学以致用,做中学强调的是在用的过程中有新的收获和体会来进一步巩固学习.细数我学过的课 ...
- linux下QT程序输出乱码解决方法
参考文章:http://blog.csdn.net/jiang1013nan/article/details/6667871 http://my.oschina.net/zjlaobusi/blog/ ...
- VMware创建Linux虚拟机并安装CentOS(三)
选择“创建自定义布局”手动给Linux指定系统分区.交换分区,鼠标单击“下一步”按钮继续. 首先创建交Swap分区,鼠标单击“创建”按钮,在弹出的“生成存储”对话框中,生成分区选择“标准分区”:鼠标单 ...
- Javascript初学篇章_6(BOM)
BOM 浏览器对象模型 BOM (浏览器对象模型),它提供了与浏览器窗口进行交互的对象 一.window对象 Window对 象表示整个浏览器窗口. 1.系统消息框 alert() alert('he ...
- Android控件之Notification
Android通知就是让设备在屏幕最顶上那栏里面显示图标,当滑下通知栏之后可以看到列表状的通知选项,有些是"通知"类型的,有些是"正在运行"类型的," ...
- 实用redis前需了解的5大事项
百万个键,每个值的长度是32-character,那么在使用6-character长度键名时,将会消耗大约96MB的空间,但是如果使用12-character长度的键名时,空间消耗则会提升至111MB ...