作者 主題: java applet  (閱讀 3166 次)

0 會員 與 1 訪客 正在閱讀本文。

DoDo

  • 可愛的小學生
  • *
  • 文章數: 9
  • 性別: 男
    • 檢視個人資料
    • L.H.Y.
java applet
« 於: 2006-06-07 01:52 »
請問我要怎麼樣修改才可以變換顏色又可以以鍵盤上下左右來控制橢圓形?


以下是我的程式碼

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

// 繼承Ch9_2_3類別, 實作KeyListener介面
public class Ch9_5_3 extends Applet implements KeyListener, ActionListener,
      ItemListener {
   public int rectWidth, rectHeight;
   public int inc = 15;
   public int offset = 30;
   public int posX, posY;
   public int width, height;
   private int colorNum, colorNum1=1;
   private Button button;
   private Choice color;
   
   // 實作事件處理方法
   public void keyPressed(KeyEvent evt) {
      resetOval(); // 重設尺寸
      int key = evt.getKeyCode();
      switch (key) {
      case KeyEvent.VK_LEFT:
         inc += 5;
         repaint(); // 重繪
         break;
      case KeyEvent.VK_RIGHT:
         inc -= 5;
         repaint(); // 重繪
         break;
      case KeyEvent.VK_UP:
         offset += 5;
         repaint(); // 重繪
         break;
      case KeyEvent.VK_DOWN:
         offset -= 5;
         repaint(); // 重繪
         break;
      }
   }
   public void keyTyped(KeyEvent evt) {}
   public void keyReleased(KeyEvent evt) {}
   // Applet的初始方法

   public void init() {
      // 取得參數
      inc = Integer.parseInt(getParameter("INC"));
      offset = Integer.parseInt(getParameter("OFFSET"));
      rectWidth = getSize().width;
      rectHeight = getSize().height;
      resetOval();

      super.init();
      addKeyListener(this);
      colorNum = 0; // 預設值為紅色
      // 下拉式清單
      color = new Choice();
      color.add("紅");
      color.add("藍");
      color.add("綠");
      color.add("黃");
      color.addItemListener(this); // 新增事件處理
      add(color); // 新增下拉式清單
      // 建立按鈕物件
      button = new Button("更改橢圓形色彩");
      button.addActionListener(this);// 新增事件處理
      add(button); // 新增按鈕
   }

   public void paint(Graphics g) {
      // 設定色彩
         switch (colorNum) {//背景顏色
         case 0:
            g.setColor(Color.red);
            break;
         case 1:
            g.setColor(Color.blue);
            break;
         case 2:
            g.setColor(Color.green);
            break;
         case 3:
            g.setColor(Color.yellow);
            break;
         }
         g.fillRect(0, 0, rectWidth, rectHeight);
         switch (colorNum1) {//圈圈顏色
         case 0:
            g.setColor(Color.red);
            break;
         case 1:
            g.setColor(Color.blue);
            break;
         case 2:
            g.setColor(Color.green);
            break;
         case 3:
            g.setColor(Color.yellow);
            break;
         }
         g.drawOval(posX, posY + 50, width, height - 50);
         // 繪出巢狀的橢圓形
         while (width >= 0 && height >= 0) {
            g.drawOval(posX, posY + 50, width, height - 50);
            posX += inc;
            posY += inc;
            width -= offset;
            height -= offset;
         }
         posX = 0;
         posY = 0;
         width = rectWidth - 1;
         height = rectHeight - 1;
   }
   public void resetOval() {
      posX = 0;
      posY = 0;
      width = rectWidth - 1;
      height = rectHeight - 1;
   }
   public void itemStateChanged(ItemEvent evt) { // 更改色彩編號
      colorNum = color.getSelectedIndex();
      repaint(); // 重繪
   }
public void actionPerformed(ActionEvent evt) { // 判斷事件來源的物件
      if (evt.getSource() == button) { // 更改色彩編號
         colorNum1 = (colorNum1 + 1 == 4) ? 0 : colorNum1 + 1;
      }
      repaint(); // 重繪
   }}
一個人只要用好了他的每一分錢,
他才能做到事業有成、
生活幸福。

http://www.lhy.idv.tw/