麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

實現類似XP風格的快速按鈕

2019-11-18 13:23:49
字體:
來源:轉載
供稿:網友


  實現功能: 類似于Windows xp中的快速按鈕的風格, 答應指定按鈕的狀態是自彈起(就是鼠標鍵按下時按鈕產生被按下的效果, 鼠標鍵抬起的時候按鈕自動回復原狀)著是開關按鈕(點擊一次, 按鈕被按下, 再點擊一次, 按鈕被彈起), 并能夠設定一組(多個)或多組互斥按鈕(即同組中有且只有一個按鈕一直處于被按下的狀態). 當然, 這個類不是很完善, 有許多地方可以改進, 比如沒有加入當按鈕處于禁止使用的狀態(Disabled), 應該再引入一個Image來顯示成灰色的效果等. 您就自己改改吧. :)
  程序代碼:
  SpeedButton.java
  --------------------------------
  import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;
  
  public class SpeedButton extends JButton implements MouseListener {
  PRivate boolean entered = false; /* 標志, 用于判定鼠標是否在按鈕上 */
  private boolean downed = false; /* 標志, 用于按鈕是否被按下 */
  
  private boolean enabledDowned = false; /* 標志, 用于按鈕是否答應被按下 */
  
  private Image image = null;
  private int groupID = 0; /* 指定按鈕屬于哪個互斥組, 取值為0時不判定 */
  
  private int buttonID; /* 按鈕本身的ID號, 唯一 */
  
  /**
  * 這個構造器有點煩, 這里可以進行優化成多個構造器來組合.
  * @see com.javax.swing.JButton
  * @author delfan,2002.07.23
  * @version 1.0
  */
  public SpeedButton(int buttonID, Image image, int width, int height, String tip, boolean enabledDowned,boolean initmode, int groupID, ActionListener actionListener) {
  this.buttonID = buttonID;
  this.image = image;
  addMouseListener(this);
  setPreferredSize(new Dimension(width, height));
  setToolTipText(tip);
  this.enabledDowned = enabledDowned;
  this.groupID = groupID;
  downed = initmode;
  addActionListener(actionListener);
  }
  
  public void paint(Graphics g) {
  if (getSize().height == 2 getSize().width == 2) { // 畫分隔條, 當按鈕寬度或高度為2的時候,
  g.setColor(new Color(119, 133, 168)); // 認為是分隔條
  g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
  g.setColor(new Color(129, 143, 178));
  g.fillRect(1, 1, getWidth(), getHeight());
  setEnabled(false);
  }
  else
  {
  if (entered) { // 鼠標在按鈕內
  g.setColor(new Color(119, 133, 168));
  g.fillRect(0, 0, getWidth(), getHeight());
  g.setColor(new Color(8, 36, 107));
  g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
  if (image != null) g.drawImage(image, 2, 2, getParent());
  } else { // 鼠標不在按鈕內
  g.setColor(getParent().getBackground());
  g.fillRect(0, 0, getWidth(), getHeight());
  if (image != null) g.drawImage(image, 2, 2, getParent());
  }
  
  if (downed) { // 按鈕被按下
  g.setColor(new Color(181, 190, 214));
  g.fillRect(0, 0, getWidth(), getHeight());
  g.setColor(new Color(8, 36, 107));
  g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
  if (image != null) g.drawImage(image, 3, 3, getParent());
  }
  }
  }
  
  public void update(Graphics g) {paint(g);}
  
  /**
  * 按鈕是否處于按下狀態
  */
  public boolean isDowned() {return downed;}
  
  /**
  * 取得按鈕的組索引號
  */
  public int getGroupID() {return groupID;}
  
  public void setDowned(boolean downed) {this.downed = downed;repaint();}
  
  public void mouseEntered(MouseEvent e) {entered = true;repaint();}
  
  public void mouseExited(MouseEvent e) {entered = false;repaint();}
  
  public void mouseClicked(MouseEvent e) {}
  
  public void mousePressed(MouseEvent e) {
  if (enabledDowned && downed && groupID == 0)
  downed = false;
  else
  downed = true;
  repaint();
  }
  
  public void mouseReleased(MouseEvent e) {
  if (!enabledDowned) downed = false;
  repaint();
  if (groupID != 0) // 通過存放按鈕的容器進行互斥按鈕的狀態改變操作
  for (int i = 0; i < getParent().getComponentCount(); i++)
  if (getParent().getComponent(i) instanceof SpeedButton) {
  if (((SpeedButton) getParent().getComponent(i)).getGroupID() == groupID
  && ((SpeedButton) getParent().getComponent(i)) != this)
  ((SpeedButton) getParent().getComponent(i)).setDowned(false);
  }
  }
  
  public int getButtonID() {return buttonID;}
  
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一本一本久久a久久精品综合小说 | 欧美日韩高清不卡 | 特黄一级小说 | 在线观看免费av网 | 国产欧美亚洲精品 | 成人在线视频在线观看 | 久久精品一区二区三区四区五区 | 欧美一级不卡视频 | 久久αv| 九九精品免费 | 午夜天堂在线视频 | 欧美综合日韩 | 国产91一区二区三区 | 新久草在线视频 | 国产成人精品午夜 | 久久福利国产 | 亚洲第一页在线观看 | 国产品久久 | 黄色大片www| 69性欧美高清影院 | 91 在线| 吾色视频 | 久久艹一区 | 国产一级aa大片毛片 | 日本网站一区二区三区 | 日本在线视频免费观看 | 男人的天堂视频网站 | 欧美a在线观看 | 91精品国产综合久久婷婷香 | 黄色影院av| 亚洲视频在线网 | 国产深夜福利视频在线播放 | av在线播放免费观看 | 国产亚洲精品久久久久久久久久 | 亚洲第一综合 | 91看片成人 | 黄色免费小视频网站 | 成人偷拍片视频在线观看 | 亚洲一区动漫 | 偷偷草网站 | 男女无遮挡羞羞视频 |