📄 cardlaydemo.java
字号:
/* CardLayout Demo: Login Applet */import java.applet.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;/** Switchable interface lets us call back the Applet, instead of * having global variables (in other languages) or passing lots of * extra stuff into the ImgPanel constructor */interface Switchable { void gotoNext(String target);}/** ImgPanel holds an Image and optional TextField, jumps to next */class ImgPanel extends Panel { /** The background Image */ Image im; /* Size of the Images */ final int WIDTH = 216; final int HEIGHT= 144; /** The container */ Switchable applet; /** The label for the next panel in the series (CardLayout * switches based on name string, not reference to a GUI component. */ String next; /** Our entry field */ TextField fld = null; /** Our pushbutton */ Button butt = null; /** Construct an ImagePanel */ ImgPanel(Switchable theApplet, Image image, String theNextPanelName) { super(); applet = theApplet; im = image; next = theNextPanelName; if (theNextPanelName == null) return; GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints cL = new GridBagConstraints(), cR = new GridBagConstraints(); cL.gridx = 0; cL.gridwidth = 1; cR.gridx = 1; cR.gridwidth = GridBagConstraints.REMAINDER; cR.weightx = 1.0; cL.weightx = 4.0; cR.weighty = cL.weighty = 0.8; cR.gridheight = cL.gridheight = GridBagConstraints.REMAINDER; cR.anchor = GridBagConstraints.SOUTHWEST; cL.anchor = GridBagConstraints.SOUTHEAST; setLayout(gridbag); // Add the textfield at the left side fld = new TextField(8); gridbag.setConstraints(fld, cL); add(fld); // Add the OK button at the right side butt = new Button("OK"); gridbag.setConstraints(butt, cR); add(butt); // Give it an ActionListener to move on to the next page butt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (fld.getText().length() > 0) applet.gotoNext(next); } }); } /** Set this panel's text field to hidden echo */ public void setNoEcho() { if (fld != null) fld.setEchoChar('*'); } /* override update() to not clear, which reduces flicker */ public void update(Graphics g) { paint(g); } /* Draw the background */ public void paint(Graphics g) { g.drawImage(im, 0, 0, this); } /* urge the Layout Mangler to make us the same size as our background */ public Dimension getPreferredSize() { return new Dimension(WIDTH, HEIGHT); } public Dimension getMinimumSize() { return getPreferredSize(); }}/** CardLayDemo -- Prototype of a Login Dialog for an Applet * * @author Ian F. Darwin * @version 1.0, July, 1997 */public class CardLayDemo extends Applet implements Switchable { private ImgPanel loginP, passwdP, welcomeP; CardLayout cardlay; /** Initialize the CardLayDemo applet. */ public void init() { // Main panel (managed by CardLayout) is details // for either Login, Passwd or Welcome! screen. setLayout(cardlay = new CardLayout()); /* create each Panel. */ add("login", loginP = new ImgPanel(this, getImage(getCodeBase(), "loginLogin.gif"), "passwd")); add("passwd", passwdP = new ImgPanel(this, getImage(getCodeBase(), "loginPasswd.gif"), "welcome")); passwdP.setNoEcho(); add("welcome", welcomeP = new ImgPanel(this, getImage(getCodeBase(), "loginWelcome.gif"), null)); } public void start() { gotoNext("login"); // gotta start somewhere } /** Switch to the next panel */ public void gotoNext(String gotoLabel) { cardlay.show(this, gotoLabel); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -