Mega Code Archive

 
Categories / Java / Swing JFC
 

Border Demo

/* From http://java.sun.com/docs/books/tutorial/index.html */ /*  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions are met:  *  * -Redistribution of source code must retain the above copyright notice, this  *  list of conditions and the following disclaimer.  *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation  *  and/or other materials provided with the distribution.  *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission.  *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")  * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE  * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  *  * You acknowledge that this software is not designed, licensed or intended  * for use in the design, construction, operation or maintenance of any  * nuclear facility.  */ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class BorderDemo extends JFrame {   public BorderDemo() {     super("BorderDemo");     Border blackline, etched, raisedbevel, loweredbevel, empty;     //A border that puts 10 extra pixels at the sides and     //bottom of each pane.     Border paneEdge = BorderFactory.createEmptyBorder(0, 10, 10, 10);     blackline = BorderFactory.createLineBorder(Color.black);     etched = BorderFactory.createEtchedBorder();     raisedbevel = BorderFactory.createRaisedBevelBorder();     loweredbevel = BorderFactory.createLoweredBevelBorder();     empty = BorderFactory.createEmptyBorder();     //First pane: simple borders     JPanel simpleBorders = new JPanel();     simpleBorders.setBorder(paneEdge);     simpleBorders.setLayout(new BoxLayout(simpleBorders, BoxLayout.Y_AXIS));     addCompForBorder(blackline, "line border", simpleBorders);     addCompForBorder(etched, "etched border", simpleBorders);     addCompForBorder(raisedbevel, "raised bevel border", simpleBorders);     addCompForBorder(loweredbevel, "lowered bevel border", simpleBorders);     addCompForBorder(empty, "empty border", simpleBorders);     //Second pane: matte borders     JPanel matteBorders = new JPanel();     matteBorders.setBorder(paneEdge);     matteBorders.setLayout(new BoxLayout(matteBorders, BoxLayout.Y_AXIS));     //XXX: We *should* size the component so that the     //XXX: icons tile OK. Without that, the icons are     //XXX: likely to be cut off and look bad.     ImageIcon icon = new ImageIcon("images/left.gif"); //20x22     Border border = BorderFactory.createMatteBorder(-1, -1, -1, -1, icon);     addCompForBorder(border, "matte border (-1,-1,-1,-1,icon)",         matteBorders);     border = BorderFactory.createMatteBorder(1, 5, 1, 1, Color.red);     addCompForBorder(border, "matte border (1,5,1,1,Color.red)",         matteBorders);     border = BorderFactory.createMatteBorder(0, 20, 0, 0, icon);     addCompForBorder(border, "matte border (0,20,0,0,icon)", matteBorders);     //Third pane: titled borders     JPanel titledBorders = new JPanel();     titledBorders.setBorder(paneEdge);     titledBorders.setLayout(new BoxLayout(titledBorders, BoxLayout.Y_AXIS));     TitledBorder titled;     titled = BorderFactory.createTitledBorder("title");     addCompForBorder(titled, "default titled border"         + " (default just., default pos.)", titledBorders);     titled = BorderFactory.createTitledBorder(blackline, "title");     addCompForTitledBorder(titled, "titled line border"         + " (centered, default pos.)", TitledBorder.CENTER,         TitledBorder.DEFAULT_POSITION, titledBorders);     titled = BorderFactory.createTitledBorder(etched, "title");     addCompForTitledBorder(titled, "titled etched border"         + " (right just., default pos.)", TitledBorder.RIGHT,         TitledBorder.DEFAULT_POSITION, titledBorders);     titled = BorderFactory.createTitledBorder(loweredbevel, "title");     addCompForTitledBorder(titled, "titled lowered bevel border"         + " (default just., above top)",         TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.ABOVE_TOP,         titledBorders);     titled = BorderFactory.createTitledBorder(empty, "title");     addCompForTitledBorder(titled, "titled empty border"         + " (default just., bottom)",         TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.BOTTOM,         titledBorders);     //Fourth pane: compound borders     JPanel compoundBorders = new JPanel();     compoundBorders.setBorder(paneEdge);     compoundBorders.setLayout(new BoxLayout(compoundBorders,         BoxLayout.Y_AXIS));     Border redline = BorderFactory.createLineBorder(Color.red);     Border compound;     compound = BorderFactory         .createCompoundBorder(raisedbevel, loweredbevel);     addCompForBorder(compound, "compound border (two bevels)",         compoundBorders);     compound = BorderFactory.createCompoundBorder(redline, compound);     addCompForBorder(compound, "compound border (add a red outline)",         compoundBorders);     titled = BorderFactory.createTitledBorder(compound, "title",         TitledBorder.CENTER, TitledBorder.BELOW_BOTTOM);     addCompForBorder(titled, "titled compound border"         + " (centered, below bottom)", compoundBorders);     JTabbedPane tabbedPane = new JTabbedPane();     tabbedPane.addTab("Simple", null, simpleBorders, null);     tabbedPane.addTab("Matte", null, matteBorders, null);     tabbedPane.addTab("Titled", null, titledBorders, null);     tabbedPane.addTab("Compound", null, compoundBorders, null);     tabbedPane.setSelectedIndex(0);     getContentPane().add(tabbedPane, BorderLayout.CENTER);   }   void addCompForTitledBorder(TitledBorder border, String description,       int justification, int position, Container container) {     border.setTitleJustification(justification);     border.setTitlePosition(position);     addCompForBorder(border, description, container);   }   void addCompForBorder(Border border, String description, Container container) {     JPanel comp = new JPanel(false);     JLabel label = new JLabel(description, JLabel.CENTER);     comp.setLayout(new GridLayout(1, 1));     comp.add(label);     comp.setBorder(border);     container.add(Box.createRigidArea(new Dimension(0, 10)));     container.add(comp);   }   public static void main(String[] args) {     JFrame frame = new BorderDemo();     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     frame.pack();     frame.setVisible(true);   } }