⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stackarea.java

📁 本程序提供了各种排序算法及演示,由java实现,可以清楚看到各算法的流程演示.
💻 JAVA
字号:
// StackArea.javaimport java.awt.*;public class StackArea extends Canvas{   private Stack stack = null;   private Font font = new Font("Monospaced", Font.PLAIN, 12);   private int max, width, height;   private ScrollPane stackPane;   private Image offscreenImage;   public StackArea(){}   public void setPane(ScrollPane _stackPane)   {      stackPane = _stackPane;   }   public void setData(Stack _stack)   {      stack = _stack;      max = findMaxSize() + 10;      setSize(getPreferredSize());      stackPane.doLayout();      repaint();   }   private int findMaxSize()   {      Node p = stack.top;      int max = Integer.MAX_VALUE * -1;      while (p != null)      {         int length = getFontMetrics(font).stringWidth(p.data);         if (length > max)           max = length;         p = p.next;      }      return max;   }   public Dimension getPreferredSize()   {      if (stack == null)         return new Dimension(0, 0);      else        return new Dimension(max * stack.numOfNodes + 25, 76);   }    public void clear()   {      stack = null;      setSize(getPreferredSize());      stackPane.doLayout();      repaint();   }   public void update(Graphics g)   {      width = this.getSize().width;      height = this.getSize().height;      if ((offscreenImage == null) ||          ((!(offscreenImage.getWidth(this) == width) && (offscreenImage.getHeight(this) == height))))        offscreenImage = this.createImage(width, height);      Graphics gr = offscreenImage.getGraphics();      paint(gr);      g.drawImage(offscreenImage, 0, 0, this);   }   public void paint(Graphics g)   {      g.clearRect(0, 0, width, height);      g.setFont(font);           int startCoord = (this.getSize().height - 70) / 2;      g.drawRect(10, startCoord, 10, 70);      g.setColor(new Color(100, 75, 57));      g.fillRect(11, startCoord + 1, 9, 69);      g.setColor(Color.white);      startCoord += 15;      g.drawString("S", 12, startCoord);      g.drawString("T", 12, startCoord + 12);      g.drawString("A", 12, startCoord + 24);      g.drawString("C", 12, startCoord + 36);      g.drawString("K", 12, startCoord + 48);      g.setColor(Color.black);      if (stack != null)        if (!stack.isEmpty())        {           Node p = stack.bottom;           int nodeNum = 0;           startCoord = (this.getSize().height - 20) / 2;           while (p != null)           {              nodeNum += 1;              int coord = (nodeNum - 1) * max + 21;              int length = getFontMetrics(font).stringWidth(p.data);              g.drawRect(coord, startCoord, max, 20);              g.setColor(Color.lightGray);              g.fillRect(coord + 1, startCoord + 1, max - 1, 19);              g.setColor(Color.black);              g.drawString(p.data, coord + (max - length) / 2, startCoord + 15);              p = p.prev;           }        }   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -