2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21
2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button // ToolbarFrame2.java Button JButton // import java.awt.*; import java.awt.event.*; public class ToolbarFrame1 extends Frame implements ActionListener { Button cutbutton, copybutton, pastebutton; public ToolbarFrame1() { super("toolbar Example (AWT)"); setsize(450, 250); addwindowlistener(new BasicWindowMonitor()); Panel toolbar = new Panel(); toolbar.setlayout(new FlowLayout(FlowLayout.LEFT));
2 3 cutbutton = new Button("Cut"); cutbutton.addactionlistener(this); toolbar.add(cutbutton); copybutton = new Button("Copy"); copybutton.addactionlistener(this); toolbar.add(copybutton); pastebutton = new Button("Paste"); pastebutton.addactionlistener(this); toolbar.add(pastebutton); // BorderLayout add add(toolbar, BorderLayout.NORTH); public void actionperformed(actionevent ae) { System.out.println(ae.getActionCommand()); public static void main(string args[]) { ToolbarFrame1 tf1 = new ToolbarFrame1(); tf1.setvisible(true); W i n d o w A d a p t e r import java.awt.event.*; import java.awt.window; public class BasicWindowMonitor extends WindowAdapter { public void windowclosing(windowevent e) { Window w = e.getwindow(); w.setvisible(false); w.dispose(); System.exit(0);
2 4 Swing Swing C L A S S P A T H C L A S S P A T H import javax.swing.*; B u t t o n J B u t t o n // ToolbarFrame2.java // Swing // import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ToolbarFrame2 extends Frame implements ActionListener {
2 5 // JButton JButton cutbutton, copybutton, pastebutton; JButton winbutton, javabutton, motifbutton; public ToolbarFrame2() { super("toolbar Example (Swing)"); setsize(450, 250); addwindowlistener(new BasicWindowMonitor()); // JPanel Panel JPanel toolbar = new JPanel(); toolbar.setlayout(new FlowLayout(FlowLayout.LEFT)); cutbutton = new JButton("Cut"); cutbutton.addactionlistener(this); toolbar.add(cutbutton); copybutton = new JButton("Copy"); copybutton.addactionlistener(this); toolbar.add(copybutton); pastebutton = new JButton("Paste"); pastebutton.addactionlistener(this); toolbar.add(pastebutton); add(toolbar, BorderLayout.NORTH); // BorderLayout add // JPanel lnfpanel = new JPanel(); LnFListener lnflistener = new LnFListener(this); javabutton = new JButton("Metal"); javabutton.addactionlistener(lnflistener); lnfpanel.add(javabutton); motifbutton = new JButton("Motif"); motifbutton.addactionlistener(lnflistener); lnfpanel.add(motifbutton); winbutton = new JButton("Windows"); winbutton.addactionlistener(lnflistener); lnfpanel.add(winbutton); add(lnfpanel, BorderLayout.SOUTH);
2 6 Swing public void actionperformed(actionevent ae) { System.out.println(ae.getActionCommand()); public static void main(string args[]) { ToolbarFrame2 tf2 = new ToolbarFrame2(); tf2.setvisible(true); B u t t o n J B u t t o n J B u t t o n L n F L i s t e n e r U I M a n a g e r. s e t L o o k A n d F e e l ( ) S w i n g U t i l i t i e s. u p d a t e C o m p o n e n t T r e e U I ( ) // LnFListener.java // listener actioncommand ActionEvent // // * Metal // * Windows // * Motif // import java.awt.*; import java.awt.event.*; import javax.swing.*; public class LnFListener implements ActionListener { Frame frame; public LnFListener(Frame f) { frame = f; public void actionperformed(actionevent e) { String lnfname = null; if (e.getactioncommand().equals("metal")) { lnfname = "javax.swing.plaf.metal.metallookandfeel";
2 7 else if (e.getactioncommand().equals("motif")) { lnfname = "com.sun.java.swing.plaf.motif.motiflookandfeel"; else { lnfname = "com.sun.java.swing.plaf.windows.windowslookandfeel"; try { UIManager.setLookAndFeel(lnfName); SwingUtilities.updateComponentTreeUI(frame); catch (UnsupportedLookAndFeelException ex1) { System.err.println("Unsupported LookAndFeel: " + lnfname); catch (ClassNotFoundException ex2) { System.err.println("LookAndFeel class not found: " + lnfname); catch (InstantiationException ex3) { System.err.println("Could not load LookAndFeel: " + lnfname); catch (IllegalAccessException ex4) { System.err.println("Cannot use LookAndFeel: " + lnfname); J B u t t o n A c t i o n E v e n t a c t i o n P e r f o r m e d ( )
2 8 Swing J B u t t o n P a n e l F r a m e P a n e l J P a n e l P a n e l J P a n e l F r a m e F r a m e J F r a m e a d d ( ) J F r a m e J F r a m e J F r a m e getcontentpane().add(something); // add(something) J F r a m e J P a n e l F r a m e P a n e l J F r a m e J P a n e l I c o n
2 9 cutbutton = new JButton("Cut", new ImageIcon("cut.gif")); cutbutton.addactionlistener(this); toolbar.add(cutbutton); copybutton = new JButton("Copy", new ImageIcon("copy.gif")); copybutton.addactionlistener(this); toolbar.add(copybutton); pastebutton = new JButton("Paste", new ImageIcon("paste.gif")); pastebutton.addactionlistener(this); toolbar.add(pastebutton); copybutton = new JButton(new ImageIcon("copy.gif")); copybutton.addactionlistener(this); toolbar.add(copybutton); public void actionperformed(actionevent e) { System.out.println(e.getActionCommand());
3 0 Swing A c t i o n L i s t e n e r public void actionperformed(actionevent ae) { if (ae.getsource() == cutbutton) { System.out.println("Got Cut event"); else if (ae.getsource() == copybutton) { System.out.println("Got Copy event"); else if (ae.getsource() == pastebutton) { System.out.println("Got Paste event"); B u t t o n a c t i o n C o m m a n d J B u t t o n s e t A c t i o n C o m m a n d ( ) a c t i o n P e r f o r m e d ( ) a c t i o n C o m m a n d A c t i o n
3 1 // ToolbarFrame4.java // Swing // import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ToolbarFrame4 extends Frame { // JButtons JButton cutbutton, copybutton, pastebutton; JButton winbutton, javabutton, motifbutton; public ToolbarFrame4() { super("toolbar Example (Swing no text)"); setsize(450, 250); addwindowlistener(new BasicWindowMonitor()); // JPanel Panel JPanel toolbar = new JPanel(); toolbar.setlayout(new FlowLayout(FlowLayout.LEFT)); CCPHandler handler = new CCPHandler(); cutbutton = new JButton(new ImageIcon("cut.gif")); cutbutton.setactioncommand(ccphandler.cut); cutbutton.addactionlistener(handler); toolbar.add(cutbutton); copybutton = new JButton(new ImageIcon("copy.gif")); copybutton.setactioncommand(ccphandler.copy); copybutton.addactionlistener(handler); toolbar.add(copybutton); pastebutton = new JButton(new ImageIcon("paste.gif")); pastebutton.setactioncommand(ccphandler.paste); pastebutton.addactionlistener(handler); toolbar.add(pastebutton); add(toolbar, BorderLayout.NORTH);
3 2 Swing // JPanel lnfpanel = new JPanel(); LnFListener lnflistener = new LnFListener(this); javabutton = new JButton("Metal"); javabutton.addactionlistener(lnflistener); lnfpanel.add(javabutton); motifbutton = new JButton("Motif"); motifbutton.addactionlistener(lnflistener); lnfpanel.add(motifbutton); winbutton = new JButton("Windows"); winbutton.addactionlistener(lnflistener); lnfpanel.add(winbutton); add(lnfpanel, BorderLayout.SOUTH); public static void main(string args[]) { ToolbarFrame4 tf4 = new ToolbarFrame4(); tf4.setvisible(true); s e t A c t i o n C o m m a n d ( ) a c t i o n P e r f o r m e d ( ) // CCPHandler.java // Cut Copy Paste // actioncommand // import java.awt.event.*; public class CCPHandler implements ActionListener { public final static String CUT = "cut"; public final static String COPY = "copy"; public final static String PASTE = "paste"; public void actionperformed(actionevent e) { String command = e.getactioncommand();
3 3 if (command == CUT) { // static System.out.println("Got Cut event"); else if (command == COPY) { System.out.println("Got Copy event"); else if (command == PASTE) { System.out.println("Got Paste event"); J I n t e r n a l F r a m e F r a m e F r a m e
3 4 Swing J D e s k t o p P a n e // layered pane JDesktopPane desktop = new JDesktopPane(); add(desktop, BorderLayout.CENTER); J I n t e r n a l F r a m e public JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable); internalframe = new JInternalFrame("Internal Frame", true, true, true, true); internalframe.setbounds(50, 50, 200, 100); desktop.add(internalframe, new Integer(1)); d e s k t o p. a d d () I n t e r g e r
3 5 J I n t e r n a l F r a m e // SimpleInternalFrame.java // // import java.awt.*; import java.awt.event.*; import javax.swing.*;
3 6 Swing public class SimpleInternalFrame extends Frame implements ActionListener { JButton openbutton, winbutton, javabutton, motifbutton; JLayeredPane desktop; JInternalFrame internalframe; public SimpleInternalFrame() { super("internal Frame Demo"); setsize(500,400); openbutton = new JButton("Open"); winbutton = new JButton("Windows"); javabutton = new JButton("Metal"); motifbutton = new JButton("Motif"); Panel p = new Panel(); p.add(openbutton); p.add(javabutton); p.add(motifbutton); p.add(winbutton); add(p, BorderLayout.SOUTH); addwindowlistener(new BasicWindowMonitor()); openbutton.addactionlistener(this); LnFListener lnf = new LnFListener(this); winbutton.addactionlistener(lnf); javabutton.addactionlistener(lnf); motifbutton.addactionlistener(lnf); // desktop = new JDesktopPane(); desktop.setopaque(true); add(desktop, BorderLayout.CENTER); public void actionperformed(actionevent e) { if ((internalframe == null) (internalframe.isclosed())) { internalframe = new JInternalFrame("Internal Frame", true, true, true, true); internalframe.setbounds(50, 50, 200, 100); desktop.add(internalframe, new Integer(1));
3 7 public static void main(string args[]) { SimpleInternalFrame sif = new SimpleInternalFrame(); sif.setvisible(true); J B u t t o n F r a m e J F r a m e J T e x t A r e a A c t i o n A c t i o n L n F L i s t e n e r
3 8 Swing // SiteManager.java // import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; public class SiteManager extends JFrame { JLayeredPane desktop; Vector popups = new Vector(); public SiteManager() { super("web Site Manager"); setsize(450, 250); addwindowlistener(new BasicWindowMonitor()); Container contentpane = getcontentpane();
3 9 JToolBar jtb = new JToolBar(); jtb.add(new CutAction(this)); jtb.add(new CopyAction(this)); jtb.add(new PasteAction(this)); contentpane.add(jtb, BorderLayout.NORTH); // LayeredPane desktop = new JDesktopPane(); contentpane.add(desktop, BorderLayout.CENTER); addsiteframe("sample"); public static void main(string args[]) { SiteManager mgr = new SiteManager(); mgr.setvisible(true); S i t e F r a m e P a g e F r a m e J I n t e r n a l F r a m e p o p u p s // public void addsiteframe(string name) { SiteFrame sf = new SiteFrame(name, this); popups.addelement(sf); desktop.add(sf, new Integer(2)); // SiteFrame public void addpageframe(string name) { PageFrame pf = new PageFrame(name, this); desktop.add(pf, new Integer(1)); pf.seticonifiable(true); popups.addelement(pf); public JInternalFrame getcurrentframe() { for (int i = 0; i < popups.size(); i++) { JInternalFrame currentframe = (JInternalFrame)popups.elementAt(i); if (currentframe.isselected()) {
4 0 Swing return currentframe; return null; g e t C u r r e n t F r a m e ( ) J T o o l B a r J T o o l B a r A c t i o n A c t i o n a c t i o n P e r f o r m e d ( ) A c t i o n A c t i o n A c t i o n a c t i o n P e r f o r m e d ( ) C o p y A c t i o n // CopyAction.java // PageFrame Action // import java.awt.event.actionevent; import javax.swing.*; public class CopyAction extends AbstractAction { SiteManager manager; public CopyAction(SiteManager sm) { super("", new ImageIcon("copy.gif")); manager = sm; public void actionperformed(actionevent ae) { JInternalFrame currentframe = manager.getcurrentframe(); if (currentframe == null) { return; // SiteFrame cut paste if (currentframe instanceof SiteFrame) { return; ((PageFrame)currentFrame).copyText();
4 1 C u t A c t i o n P a s t e A c t i o n A c t i o n s J I n t e r n a l F r a m e F r a m e J I n t e r n a l F r a m e // SiteFrame.java // JInternalFrame // HTML // import java.awt.*; import javax.swing.*; import javax.swing.event.*; public class SiteFrame extends JInternalFrame implements ListSelectionListener { JList namelist; SiteManager parent; // String[] pages = {"index.html", "page1.html", "page2.html"; public SiteFrame(String name, SiteManager sm) { super("site: " + name, true, true, true); parent = sm; setbounds(50,50,250,100); namelist = new JList(pages); namelist.setselectionmode(listselectionmodel.single_selection); namelist.addlistselectionlistener(this); Container contentpane = getcontentpane(); contentpane.add(namelist, BorderLayout.CENTER);
4 2 Swing S i t e F r a m e v a l u e C h a n g e d () P a g e F r a m e public void valuechanged(listselectionevent lse) { // if (!lse.getvalueisadjusting()) { parent.addpageframe((string)namelist.getselectedvalue()); J I n t e r n a l F r a m e // PageFrame.java // JInternalFrame // HTML // import java.awt.*; import java.io.*; import java.awt.event.*; import javax.swing.*; public class PageFrame extends JInternalFrame implements ActionListener { SiteManager parent; String filename; JTextArea ta; public PageFrame(String name, SiteManager sm) { super("page: " + name, true, true, true, true); parent = sm; setbounds(50,50,300,150); // JFrame
4 3 Container contentpane = getcontentpane(); // ta = new JTextArea(); JScrollPane jsp = new JScrollPane(ta); contentpane.add(jsp, BorderLayout.CENTER); // File Save JMenuBar jmb = new JMenuBar(); JMenu filemenu = new JMenu("File"); JMenuItem saveitem = new JMenuItem("Save"); saveitem.addactionlistener(this); filemenu.add(saveitem); jmb.add(filemenu); setjmenubar(jmb); // filename = name; loadcontent(); public void actionperformed(actionevent ae) { // save savecontent(); P a g e F r a m e r e a d ( ) w r i t e ( ) public void loadcontent() { try { FileReader fr = new FileReader(filename); ta.read(fr, null); fr.close(); catch (Exception e) { System.err.println("Could not load page: "+filename); public void savecontent() {
4 4 Swing try { FileWriter fw = new FileWriter(filename); ta.write(fw); fw.close(); catch(exception e) { System.err.println("Could not save page: "+filename); J T e x t C o m p o n e n t public void cuttext() { ta.cut(); public void copytext() { ta.copy(); public void pastetext() { ta.paste(); J C o m p o n e n t