zoukankan      html  css  js  c++  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 extends MouseAdapter{
     12    JFrame fr=new JFrame("StackDemo");//对话框
     13    JPanel pan= new JPanel();//菜单面板
     14    JPanel panStack = new JPanel();
     15    JButton pushBtn, popBtn, peekBtn;
     16    JTextField tf= new JTextField("整数", 4);
     17    JButton stackBtn[]= new JButton[10];
     18    
     19    JPanel panStackPointerLabel= new JPanel();
     20    JLabel stackPointerLabel = new JLabel("<-top");
     21 
     22    JPanel panRet= new JPanel();   
     23    JTextField tfRet= new JTextField("操作结果!");
     24 
     25    int top;
     26    
     27    public stackDemo(){
     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(new pushAction());
     40       pan.add(popBtn=new JButton("出栈"));
     41       popBtn.addMouseListener(new popAction());
     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(new FlowLayout(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 void mouseClicked(MouseEvent e){
     73        tf.selectAll();//鼠标单击时选中全部文本
     74    }
     75    
     76    //push 按钮监听器
     77    class pushAction implements MouseListener{
     78        public void mouseClicked(MouseEvent e){
     79           String text;
     80           
     81           if((text=tf.getText())!="   "){
     82               for(int i=0; i<text.length(); ++i)
     83                  if(!Character.isDigit(text.charAt(i)))
     84                     return ;
     85           }
     86           if(top<0){
     87              tfRet.setText("栈顶溢出!");
     88              return ;
     89           }
     90           Point pt=stackBtn[top].getLocation();
     91           stackBtn[top].setText(text);
     92           tfRet.setText("进栈值" + text);
     93           stackPointerLabel.setBounds(0, pt.y, 50, 50);
     94           --top;
     95        }
     96       public void mouseDragged(MouseEvent e){}
     97       public void mouseEntered(MouseEvent e){}
     98       public void mouseExited(MouseEvent e){}
     99       public void mouseMoved(MouseEvent e){}
    100       public void mouseReleased(MouseEvent e){}
    101       public void mousePressed(MouseEvent e){}
    102    }
    103 
    104    //pop按钮监听器
    105    class popAction extends MouseAdapter{
    106        public void mouseClicked(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 void main(String args[]){
    122       stackDemo mySstackDemo = new stackDemo();
    123    }
    124 }
  • 相关阅读:
    LeetCode 252. Meeting Rooms
    LeetCode 161. One Edit Distance
    LeetCode 156. Binary Tree Upside Down
    LeetCode 173. Binary Search Tree Iterator
    LeetCode 285. Inorder Successor in BST
    LeetCode 305. Number of Islands II
    LeetCode 272. Closest Binary Search Tree Value II
    LeetCode 270. Closest Binary Search Tree Value
    LeetCode 329. Longest Increasing Path in a Matrix
    LintCode Subtree
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/3784277.html
Copyright © 2011-2022 走看看