button2dtest.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 108 行

JAVA
108
字号
     import java.applet.*;
     import java.awt.*;
     import java.awt.event.*;

     public class Button2DTest extends Applet implements Runnable, ActionListener
     {
          // 动画线程
          private Thread animation;

          private BufferedGraphics offscreen;
 
          // 要绘制的Button2D对象数组
          private Button2D[] buttons;

          // 用来绘制的字体名数组 
          private final String[] fonts = {"Helvetica", "Arial", "Courier", "Terminal", "Georgia"};
          private final int NUM_BUTTONS = fonts.length;

          public void init()
          {               
               // 创建ButtonImageGroup供按钮使用
               ButtonImageGroup group = new ButtonImageGroup(3, "buttons.gif");
               group.init(this);

               // 创建实际的按钮
               buttons = new Button2D[NUM_BUTTONS];
               for(int i = 0; i < NUM_BUTTONS; i++)
               {
                    // 创建一个描述所用字体的标签
                    Label2D label = new Label2D(new Font(fonts[i], Font.PLAIN, 18), fonts[i], Color.BLACK);

                    // 创建按钮并让标签居中
                    buttons[i] = new Button2D(label, group, new Vector2D.Double(50, 10+(i*55)));
                    label.centerOn(buttons[i].getBounds(), (Graphics2D) getGraphics());

                    // 注册按钮来接收鼠标事件
                    addMouseListener(buttons[i]);
                    addMouseMotionListener(buttons[i]);
   
                    // 让按钮知道applet想从它接收动作事件
                    buttons[i].addActionListener(this);
               }

               offscreen = new BufferedGraphics(this);

               AnimationStrip.observer = this;

          }   // init


          public void start()
          {
              // 启动动画线程
              animation = new Thread(this);
              animation.start();
          }

          public void stop() 
          {
              animation = null;
          }

          public void run() 
          {
               Thread t = Thread.currentThread();
	       while (t == animation)
               {
                    repaint();

                    try
                    {     
                         Thread.sleep(10);
                    }
                    catch(InterruptedException e) 
                    {
                         break;
                    }
                }              
           }   // run

          
           public void update(Graphics g)
           {
               paint(g);
           }
 
           public void paint(Graphics g) 
           {
               Graphics2D bg = (Graphics2D)offscreen.getValidGraphics();
               bg.setPaint(Color.BLUE.darker());
               bg.fillRect(0, 0, getSize().width, getSize().height);

               // 绘制按钮
               for(int i = 0; i < NUM_BUTTONS; i++)
               {
                    buttons[i].paint(bg);
               }
               
               g.drawImage(offscreen.getBuffer(), 0, 0, this);

           }    // paint

           // 如果有动作从Button2D对象发出,只是把事件打印到控制台
           public void actionPerformed(ActionEvent e)
           {
                System.out.println(e);
           }
     }     

⌨️ 快捷键说明

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