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

📄 menu.java

📁 手机播放交谈实时监控软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    MenuPage curPage = null;
    synchronized(ANIM_LOCK)
    {
      if (m_inTransition)
      {
        curPage = m_transPage;
      }
      else
      {
        curPage = m_curPage;
      }
    }
    return curPage;
  }
  
  /**
   * Returns selected item or null if no item is currently selected.
   * @return Selected item or null.
   */
  public PageItem getSelectedItem()
  {
    MenuPage curPage = getCurrentPage();
    if (curPage != null)
    {
      return curPage.itemAt(curPage.getSelectedIndex());
    }
    else
    {
      return null;
    }
  }
  
  /**
   * Returns index of selected item or -1 if no item is currently selected. 
   * @return Index of selected item or -1.
   */
  public int getSelectedItemIndex()
  {
    MenuPage curPage = getCurrentPage();
    if (curPage != null)
    {
      return curPage.getSelectedIndex();
    }
    else
    {
      return -1;
    }
  }
  
  /**
   * Sets index of selected item.
   * @param itemIndex The index of the item to select.
   */
  public void setSelectedItemIndex(int itemIndex)
  {
    MenuPage curPage = getCurrentPage();
    if (curPage != null)
    {
      PageItem oldItem = curPage.itemAt(curPage.getSelectedIndex());
      curPage.setSelectedIndex(itemIndex);
      PageItem newItem = curPage.itemAt(curPage.getSelectedIndex());
      if (m_listener != null)
      {
        m_listener.itemSelected(curPage, oldItem, newItem);
      }
      if (m_canvas != null)
      {
        m_canvas.repaint();
      }
    }
  }
  
  /**
   * Returns the canvas this menu is drawn upon.
   * @return	The canvas drawing this menu.
   */
  public Canvas getCanvas()
  {
    return m_canvas;
  }
  /**
   * Sets the canvas this menu is drawn upon.
   * @param canvas The canvas drawing this menu.
   */
  public void setCanvas(Canvas canvas)
  {
    m_canvas = canvas;
  }
  /**
   * Returns the listener.
   * @return The menu listener.
   */
  public MenuListener getListener()
  {
    return m_listener;
  }
  /**
   * Sets the listener which is reported on menu events.
   * @param listener A menu listener.
   */
  public void setListener(MenuListener listener)
  {
    m_listener = listener;
  }
  /**
   * Returns the painter used to paint the menu.
   * @return	The painter.
   */
  public MenuPainter getPainter()
  {
    return m_painter;
  }
  /**
   * Sets the painter used to paint the menu.
   * @param painter		The painter.
   */
  public void setPainter(MenuPainter painter)
  {
    m_painter = painter;
  }
  /**
   * Returns the frame delay in milliseconds.
   * @return The delay between each frame update.
   */
  public long getFrameDelay()
  {
    return m_frameDelay;
  }
  /**
   * Returns number of frames in a page switch.
   * @return	Number of frames in a page switch.
   */
  public int getFrames()
  {
    return m_frames;
  }
  /**
   * Returns height of this menu.
   * @return	The height.
   */
  public int getHeight()
  {
    return m_height;
  }
  /**
   * Returns start page of this menu.
   * @return	The start page.
   */
  public MenuPage getStartPage()
  {
    return m_startPage;
  }
  /**
   * Returns width of this menu.
   * @return	The width.
   */
  public int getWidth()
  {
    return m_width;
  }
  /**
   * Returns x offset of this menu.
   * @return	The x offset.
   */
  public int getX()
  {
    return m_x;
  }
  /**
   * Returns y offset of this menu.
   * @return	The y offset.
   */
  public int getY()
  {
    return m_y;
  }
  /**
   * Sets the location of this menu.
   * @param x	The x offset.
   * @param y	The y offset.
   */
  public void setLocation(int x, int y)
  {
    m_x = x;
    m_y = y;
  }
  /**
   * Sets the size of this menu. If width and height are zero,
   * these values will be collected from the canvas that this
   * menu is painted upon.
   * @param width	The width.
   * @param height	The height.
   */
  public void setDimensions(int width, int height)
  {
    m_width = width;
    m_height = height;
  }
  /**
   * Sets the values used in a transition between to pages.
   * A transition consists of a number of frames with a delay
   * between each frame. A full transition will take
   * <param>nbrOfFrames</param> * (<param>frameDelay</param> +
   * time to paint frame) milliseconds.
   * 
   * @param nbrOfFrames		Number of frames in a transition.
   * @param frameDelay		Delay in milliseconds in each transition.
   */
  public void setFrameData(int nbrOfFrames, long frameDelay)
  {
    m_frames = nbrOfFrames;
    m_frameDelay = frameDelay;
  }
  
  /**
   * Starts a new transition between pages. If there is an ongoing transition,
   * this is immediately pushed to its end and the new one is started.
   * @param fromPage	Transition source page.
   * @param toPage		Transition destination page.
   * @param back		True if it is a transition back to destination page, false otherwise.
   */
  protected void startTransition(MenuPage fromPage, MenuPage toPage, boolean back)
  {
    synchronized(ANIM_LOCK)
    {
      m_curPage = fromPage;
      m_transPage = toPage;

      // Wait for ongoing transition to end
      if (m_inTransition)
      {
        ANIM_LOCK.notifyAll();        
      }
      while (m_inTransition)
      {
        try
        {
          ANIM_LOCK.wait();
        }
        catch (InterruptedException e) {}
      }
      
      m_transitionBack = back;
      
      // Start new transition
      m_inTransition  = true;
      ANIM_LOCK.notifyAll();
    }
  }

  /**
   *  <code>Runnable</code> implementation, invokes
   *  the <code>MenuPainter</code> on transitions.
   */
  public void run()
  {
    while(m_running)
    {
      synchronized(ANIM_LOCK)
      {
        // Wait for a transition to be requested
        while (!m_inTransition)
        {
          try
          {
            ANIM_LOCK.wait();
          } catch (InterruptedException e) {}
        }
        
        // Transition initiated
        m_inTransition = true;
        int frames = m_frames;
        long delay = m_frameDelay;
        MenuPage fromPage = m_curPage;
        MenuPage toPage = m_transPage;
        boolean backFlag = m_transitionBack;
        if (m_listener != null)
        {
          m_listener.transitionStarted(fromPage, toPage,
              delay, frames, backFlag); 
        }
        
        // Do each frame in transition
        for (; m_frame < frames; m_frame++)
        {
          try
          {
            ANIM_LOCK.wait(delay);
          } catch (InterruptedException e1) {}
          if (m_canvas != null)
          {
            m_canvas.repaint();
          }
          
          // Check if someone changed parameters for transition,
          // in that case interrupt current transition
          if (m_curPage != fromPage || m_transPage != toPage)
          {
            break;
          }
        }
        m_frame = 0;
        m_curPage = toPage;
        if (m_canvas != null) m_canvas.repaint();
        m_inTransition = false;

        if (m_listener != null)
        {
          m_listener.transitionStopped(fromPage, toPage); 
        }

        if (m_canvas != null)
        {
          m_canvas.repaint();
        }
        
        // Notify that this transition has ended
        ANIM_LOCK.notifyAll();
      }
    }
  }
}

⌨️ 快捷键说明

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