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

📄 flycanvas.java

📁 源码为科学出版社出版的英文<java设计模式>(影印版)所用的所有例子程序
💻 JAVA
字号:
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.border.*;
import javax.accessibility.*;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class FlyCanvas extends JxFrame
implements MouseMotionListener {
   Folder folder;
   Vector names;
   Vector folders;

   FolderFactory fact;
   final int Top = 30, Left = 30;
   final int  W = 50, H = 30;
   final int VSpace = 80, HSpace=70, HCount = 3;
   String selectedName="";
//-------------------------------  
   public FlyCanvas()   {
      super("Flyweight Canvas");

      loadNames();
      loadFolders();
      JPanel jp = new JPanel();
      getContentPane().add(jp);
      setSize(new Dimension(300,300));
      addMouseMotionListener(this);
      setVisible(true);
      repaint();
   }
//-------------------------------  
   private void loadFolders() {
      folders = new Vector();
      for (int i = 0; i < names.size (); i++) {
         folders.add (fact.getFolder (false));
      }
   }
//-------------------------------  
   private void loadNames() {
      names = new Vector();

      fact = new FolderFactory();
      names.addElement("Alan");   
      names.addElement("Barry");  
      names.addElement("Charlie");
      names.addElement("Dave");   
      names.addElement("Edward"); 
      names.addElement("Fred");   
      names.addElement("George"); 

      selectedName = "";
      
   }
//-------------------------------
   public void paint(Graphics g) {
      Folder f;
      String name;

      int j = 0;      //count number in row
      int row = Top;  //start in upper left
      int x = Left;

      //go through all the names and folders
      for (int i = 0; i< names.size(); i++) {
         name = (String)names.elementAt(i);
         f = (Folder)folders.elementAt(i);
         if (name.equals(selectedName))
            f = fact.getFolder(true);
            
            //have that folder draw itself at this spot
         f.draw(g, x, row, name);

         x = x + HSpace;          //change to next posn
         j++;
         if (j >= HCount) {       //reset for next row
            j = 0;         
            row += VSpace;
            x = Left;
         }
      }
   }
//-------------------------------  
   public void mouseMoved(MouseEvent e) {
      int j = 0;      //count number in row
      int row = Top;  //start in upper left
      int x = Left;

      //go through all the names and folders
      for (int i = 0; i< names.size(); i++) {
         //see if this folder contains the mouse
         Rectangle r = new Rectangle(x,row,W,H);
         if (r.contains(e.getX(), e.getY())) {
            selectedName=(String)names.elementAt(i);
            repaint();
         }
         x = x + HSpace;          //change to next posn
         j++;
         if (j >= HCount) {       //reset for next row
            j = 0;         
            row += VSpace;
            x = Left;
         }
      }

   }
   public void mouseDragged(MouseEvent e){}

//-------------------------------  
   static public void main(String[] argv) {
      new FlyCanvas();
   }
}


⌨️ 快捷键说明

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