characterbuilder.java

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

JAVA
101
字号
     import java.applet.*;
     import java.awt.*;
     import java.awt.event.*;
  
     //  CharacterBuilder 类包含几个放在一个CardLayout中的Panel,还有"back"和
     // "next"按钮 
     public class CharacterBuilder extends Applet implements ActionListener
     {
          // 在cardPanel中选择下一个和上一个按钮
          private Button back;
          private Button next;
     
          private Panel        attributePanel;
          private SummaryPanel summaryPanel;

          // 描述不同属性选项的常数String
          private final String[] GENDERS = new String[] { "Male", "Female" };
          private final String[] SKILLS = new String[]  
                                 { "Strength", "Wisdom", "Agility",  "Magic" };
          private final String[] PROFESSIONS = new String[]
                 { "Knight", "Ranger", "Archer", "Wizard", "Smith",  "Druid" };

          // 覆盖Applet类的 init 方法
          public void init()
          {
               // 创建一个GridLayout来容纳我们的卡片和按钮
               setLayout(new GridLayout(2, 1));

               // 得到给角色分配的技能点数
               int skillPoints;
               try
               {
                    skillPoints = Integer.parseInt(getParameter("SkillPoints"));
               }
               catch(NumberFormatException e)
               {
                    skillPoints = 10;   
               }

               // 创建一组属性面板; 其中一个是角色的姓名,
               // 性别, 技能, 和职业
               AttributePanel[] panels = new AttributePanel[] { 
                    new TextFieldPanel("Name", "Enter your name: ", 20),          
                    new CheckboxPanel("Gender", GENDERS, GENDERS[0]),
                    new SkillPanel("Skills", SKILLS, skillPoints),
                    new CheckboxPanel("Profession", PROFESSIONS, PROFESSIONS[0]) 
               };

               // 创建一个 Panel来放置我们的CardLayout
               attributePanel = new Panel();                 
               attributePanel.setLayout(new CardLayout());

               // 把AttributePanels 添加到主面板
               for(int i = 0; i < panels.length; i++)
               {
                    attributePanel.add(panels[i], panels[i].getAttribute());
               }

               // 创建 SummaryPanel,并把它加到 CardLayout中
               summaryPanel = new SummaryPanel(panels);
               attributePanel.add(summaryPanel, "Summary");
   
               // 添加 attributePanel
               add(attributePanel);

               // 创建并添加 "back" 和 "next" 按钮
               Panel p = new Panel();
               
               back = new Button("back");
               back.addActionListener(this);
               p.add(back);

               next = new Button("next"); 
               next.addActionListener(this);
               p.add(next);

               p.setBackground(Color.BLACK);

               add(p);
          }

          // 在点击 "back" 或者 "next" 按钮时调用
          public void actionPerformed(ActionEvent e)
          {
               CardLayout cardLayout = (CardLayout)attributePanel.getLayout();

               if(e.getSource() == back)
               {
                    cardLayout.previous(attributePanel);
               }
               else if(e.getSource() == next)
               {
                    cardLayout.next(attributePanel);
               }

               // 在每一次变更后更新概要
               summaryPanel.update();
          }

     }    // CharacterBuilder

⌨️ 快捷键说明

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