Исходный текст аплета Options

Оглавление Работа с панелями Создание панелей Добавление панелей Добавление компонент Рисование в панели Класс на базе Panel Аплет Options Исходный текст Описание текста

Назад Вперед

Исходный текст аплета Options представлен в листинге 1.

Листинг 1. Файл Options.java

    import java.applet.*;
    import java.awt.*;

    public class Options extends Applet
    {
      FirstPanel pPanel1;
      CardPanel pCard;
      ControlPanel pControl;

      public String getAppletInfo()
      {
        return "Name: Options";
      }

      public void init()
      {
        setLayout(new GridLayout(3, 1));

        pPanel1 = new FirstPanel();
        add(pPanel1);

        pCard = new CardPanel(pPanel1);
        add(pCard);

        pControl = new ControlPanel(pCard);
        add(pControl);

        pPanel1.setBackground(Color.yellow);
        pPanel1.setForeground(Color.black);

        repaint();
      }
    }

    class FirstPanel extends Panel
    {
      String szFontName = "TimesRoman";

      public void paint(Graphics g)
      {
        Dimension dimAppWndDimension = getSize();

        g.drawRect(0, 0,
          dimAppWndDimension.width  - 1,
          dimAppWndDimension.height - 1);

        g.setFont(new Font(szFontName,
          Font.PLAIN, 24));
        g.drawString("First panel", 10, 50);

        super.paint(g);
      }
    }

    class CardPanel extends Panel
    {
      Panel pBgColor;
      Panel pFgColor;
      Panel pFont;

      Panel pControlled;

      Choice chBgColor;
      Choice chFgColor;
      Choice chFont;

      Label lbBgColor;
      Label lbFgColor;
      Label lbFont;

      public CardPanel(Panel pControlledPanel)
      {
        pControlled = pControlledPanel;

        setLayout(new CardLayout(5, 5));

        pBgColor = new Panel();
        pFgColor = new Panel();
        pFont    = new Panel();

        add("BgColor", pBgColor);
        add("FgColor", pFgColor);
        add("Font", pFont);

        chBgColor = new Choice();
        chFgColor = new Choice();
        chFont    = new Choice();

        chBgColor.add("Yellow");
        chBgColor.add("Green");
        chBgColor.add("White");

        chFgColor.add("Black");
        chFgColor.add("Red");
        chFgColor.add("Green");

        chFont.add("TimesRoman");
        chFont.add("Helvetica");
        chFont.add("Courier");

        lbBgColor = new Label("Background color");
        lbFgColor = new Label("Foreground color");
        lbFont = new Label("Font");

        pBgColor.add(lbBgColor);
        pBgColor.add(chBgColor);

        pFgColor.add(lbFgColor);
        pFgColor.add(chFgColor);

        pFont.add(lbFont);
        pFont.add(chFont);
      }

      public void paint(Graphics g)
      {
        Dimension dimAppWndDimension = getSize();
        g.drawRect(0, 0,
          dimAppWndDimension.width  - 1,
          dimAppWndDimension.height - 1);

        super.paint(g);
      }

      public boolean action(Event evt, Object obj)
      {
        Choice ch;

        if(evt.target instanceof Choice)
        {
          ch = (Choice)evt.target;

          if(evt.target.equals(chBgColor))
          {
    	if(ch.getSelectedIndex() == 0)
    	  pControlled.setBackground(
                Color.yellow);

    	else if(ch.getSelectedIndex() == 1)
    	  pControlled.setBackground(
                Color.green);

    	else if(ch.getSelectedIndex() == 2)
    	  pControlled.setBackground(
                Color.white);
          }
          else if(evt.target.equals(chFgColor))
          {
    	if(ch.getSelectedIndex() == 0)
    	  pControlled.setForeground(
                Color.black);

    	else if(ch.getSelectedIndex() == 1)
    	  pControlled.setForeground(
                Color.red);

    	else if(ch.getSelectedIndex() == 2)
    	  pControlled.setForeground(
                Color.green);
          }
          else if(evt.target.equals(chFont))
          {
    	if(ch.getSelectedIndex() == 0)
    	  ((FirstPanel)pControlled).szFontName
                = "TimesRoman";

    	else if(ch.getSelectedIndex() == 1)
    	  ((FirstPanel)pControlled).szFontName
                = "Helvetica";

    	else if(ch.getSelectedIndex() == 2)
    	  ((FirstPanel)pControlled).szFontName
                = "Courier";
          }
          else
          {
    	return false;
          }
          pControlled.repaint();

          return true;
        }
        return false;
      }
    }

    class ControlPanel extends Panel
    {
      Button btNext;
      Button btPrev;
      Button btBgColor;
      Button btFgColor;
      Button btFont;
      Panel pCard;

      public ControlPanel(Panel pCardPanel)
      {
        pCard = pCardPanel;
        setLayout(new GridLayout(2,3));

        btBgColor = new Button("Background Color");
        btFgColor = new Button("Foreground Color");
        btFont = new Button("Set Font");
        btNext = new Button("Next");
        btPrev = new Button("Prev");

        add(btBgColor);
        add(btFgColor);
        add(btFont);
        add(btNext);
        add(btPrev);
      }

      public boolean action(Event evt, Object obj)
      {
        if(evt.target instanceof Button)
        {
          if(evt.target.equals(btBgColor))
          {
    	((CardLayout)pCard.getLayout()).show(
                pCard, "BgColor");
          }
          else if(evt.target.equals(btFgColor))
          {
    	((CardLayout)pCard.getLayout()).show(
                pCard, "FgColor");
          }
          else if(evt.target.equals(btFont))
          {
    	((CardLayout)pCard.getLayout()).show(
                pCard, "Font");
          }
          else if(evt.target.equals(btNext))
          {
    	((CardLayout)pCard.getLayout()).next(
                pCard);
          }
          else if(evt.target.equals(btPrev))
          {
    	((CardLayout)pCard.getLayout()).
                previous(pCard);
          }
          else
          {
    	return false;
          }
          return true;
        }
        return false;
      }
    }

Исходный текст документа HTML, созданный для аплета Options системой Java WorkShop, представлен в листинге 2.

Листинг 2. Файл Options.tmp.html

    <applet name="Options"
      code="Options"
      codebase=
    "file:/E:/Sun/Articles/vol8/src/Options"
      width="500"
      height="600"
      align="Top"
      alt="If you had a java-enabled browser,
     you would see an applet here.">
     <hr>If your browser recognized the applet tag,
    you would see an applet here.<hr>
    </applet>

Назад Вперед