java 栈 图_java的栈图形演示

1 import java.awt.*;2 import javax.swing.*;3 import java.awt.event.*;4 /*

5 指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件(比如 Button)生成此高级别事件。6 事件被传递给每一个 ActionListener 对象,这些对象是使用组件的 addActionListener 方法注册的,用以接收这类事件。7 所以在给TextField类添加 ActionListener 类型的监听器时就会失败!8

9 ****下面还有XXXListener和XXXAdapter的用法,相信你会喜欢上XXXAdapter的用法10 */

11 public class stackDemo extendsMouseAdapter{12 JFrame fr=new JFrame("StackDemo");//对话框

13 JPanel pan= new JPanel();//菜单面板

14 JPanel panStack = newJPanel();15 JButton pushBtn, popBtn, peekBtn;16 JTextField tf= new JTextField("整数", 4);17 JButton stackBtn[]= new JButton[10];18

19 JPanel panStackPointerLabel= newJPanel();20 JLabel stackPointerLabel = new JLabel("

22 JPanel panRet= newJPanel();23 JTextField tfRet= new JTextField("操作结果!");24

25 inttop;26

27 publicstackDemo(){28 fr.setSize(420,500);29 fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);30 fr.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));31

32 pan.setPreferredSize(new Dimension(400, 50));33 pan.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));34 panStack.setPreferredSize(new Dimension(80, 350));//设置栈面板大小

35 panStack.setBackground(Color.yellow);36 pan.setBackground(Color.blue);37 pan.add(new JLabel("操作菜单:"));38 pan.add(pushBtn=new JButton("进栈"));39 pushBtn.addMouseListener(newpushAction());40 pan.add(popBtn=new JButton("出栈"));41 popBtn.addMouseListener(newpopAction());42 pan.add(peekBtn=new JButton("栈顶元素"));43

44 tf.addMouseListener(this);45 pan.add(tf);46

47 for(int i=0; i<10; ++i){48 stackBtn[i]=new JButton(" ");49 panStack.add(stackBtn[i]);50 }51 fr.add(pan);52 fr.add(panStack);53 panStackPointerLabel.setLayout(null);54 panStackPointerLabel.setPreferredSize(new Dimension(80, 350));//设置指针面板的大小

55 panStackPointerLabel.setBackground(Color.LIGHT_GRAY);56 stackPointerLabel.setFont(new Font("华文行楷", Font.BOLD, 20));57 panStackPointerLabel.add(stackPointerLabel);58

59 fr.add(panStackPointerLabel);60 panRet.setLayout(newFlowLayout(FlowLayout.LEFT));61 panRet.setBackground(Color.red);62 panRet.setPreferredSize(new Dimension(400, 50));63

64 tfRet.setEditable(false);//不能不编辑

65 panRet.add(tfRet);//操作结果面板

66 fr.add(panRet);67 fr.setVisible(true);68 stackPointerLabel.setBounds(0, stackBtn[9].getLocation().y, 50, 50);//设置栈顶指针位置

69 top=9;70 }71

72 public voidmouseClicked(MouseEvent e){73 tf.selectAll();//鼠标单击时选中全部文本

74 }75

76 //push 按钮监听器

77 class pushAction implementsMouseListener{78 public voidmouseClicked(MouseEvent e){79 String text;80

81 if((text=tf.getText())!=" "){82 for(int i=0; i

104 //pop按钮监听器

105 class popAction extendsMouseAdapter{106 public voidmouseClicked(MouseEvent e){107 String text;108 if(top>=9){109 tfRet.setText("栈底溢出!");110 return;111 }112 ++top;113 Point pt=stackBtn[top].getLocation();114 text=stackBtn[top].getText();115 tfRet.setText("出栈值" +text);116 stackBtn[top].setText(" ");117 stackPointerLabel.setBounds(0, pt.y, 50, 50);118 }119 }120

121 public static voidmain(String args[]){122 stackDemo mySstackDemo = newstackDemo();123 }124 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值