Оглавление
Работа с панелями |
Исходный текст аплета 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>