<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FJLayeredPane</id>
		<title>Java Tutorial/Swing/JLayeredPane - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FJLayeredPane"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Swing/JLayeredPane&amp;action=history"/>
		<updated>2026-04-11T00:22:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Swing/JLayeredPane&amp;diff=3917&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Swing/JLayeredPane&amp;diff=3917&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Swing/JLayeredPane&amp;diff=3918&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Swing/JLayeredPane&amp;diff=3918&amp;oldid=prev"/>
				<updated>2010-05-31T15:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Implement buttons at different layers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLayeredPane;&lt;br /&gt;
public class Main extends JFrame {&lt;br /&gt;
  public Main() {&lt;br /&gt;
    setSize(200, 150);&lt;br /&gt;
    setDefaultCloseOperation(EXIT_ON_CLOSE);&lt;br /&gt;
    JLayeredPane lp = getLayeredPane();&lt;br /&gt;
    JButton top = new JButton();&lt;br /&gt;
    top.setBackground(Color.white);&lt;br /&gt;
    top.setBounds(20, 20, 50, 50);&lt;br /&gt;
    JButton middle = new JButton();&lt;br /&gt;
    middle.setBackground(Color.gray);&lt;br /&gt;
    middle.setBounds(40, 40, 50, 50);&lt;br /&gt;
    JButton bottom = new JButton();&lt;br /&gt;
    bottom.setBackground(Color.black);&lt;br /&gt;
    bottom.setBounds(60, 60, 50, 50);&lt;br /&gt;
    lp.add(middle, new Integer(2));&lt;br /&gt;
    lp.add(top, new Integer(3));&lt;br /&gt;
    lp.add(bottom, new Integer(1));&lt;br /&gt;
    &lt;br /&gt;
    setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new Main();&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  JLayeredPane Layer Constants ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ConstantDescriptionFRAME_CONTENT_LAYERLevel -30,000 for holding the menu bar and content pane; not normally used by developersDEFAULT_LAYERLevel 0 for the normal component levelPALETTE_LAYERLevel 100 for holding floating toolbarsMODAL_LAYERLevel 200 for holding pop-up dialog boxes, on top of palettes, and below pop-upsPOPUP_LAYERLevel 300 for holding pop-up menus and tooltipsDRAG_LAYERLevel 400 for ensuring that dragged objects remain on top&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Moves an image of Duke around within a layered pane in response to mouse motion events. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Sun grants you (&amp;quot;Licensee&amp;quot;) a non-exclusive, royalty free, license to use,&lt;br /&gt;
 * modify and redistribute this software in source and binary code form,&lt;br /&gt;
 * provided that i) this copyright notice and license appear on all copies of&lt;br /&gt;
 * the software; and ii) Licensee does not utilize the software in a manner&lt;br /&gt;
 * which is disparaging to Sun.&lt;br /&gt;
 *&lt;br /&gt;
 * This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind. ALL&lt;br /&gt;
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY&lt;br /&gt;
 * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR&lt;br /&gt;
 * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE&lt;br /&gt;
 * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING&lt;br /&gt;
 * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS&lt;br /&gt;
 * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,&lt;br /&gt;
 * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER&lt;br /&gt;
 * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF&lt;br /&gt;
 * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
 *&lt;br /&gt;
 * This software is not designed or intended for use in on-line control of&lt;br /&gt;
 * aircraft, air traffic, aircraft navigation or aircraft communications; or in&lt;br /&gt;
 * the design, construction, operation or maintenance of any nuclear&lt;br /&gt;
 * facility. Licensee represents and warrants that it will not use or&lt;br /&gt;
 * redistribute the Software for such purposes.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Point;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.MouseEvent;&lt;br /&gt;
import java.awt.event.MouseMotionListener;&lt;br /&gt;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.Box;&lt;br /&gt;
import javax.swing.BoxLayout;&lt;br /&gt;
import javax.swing.ImageIcon;&lt;br /&gt;
import javax.swing.JCheckBox;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JLayeredPane;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class LayeredPaneDemo extends JPanel implements ActionListener, MouseMotionListener {&lt;br /&gt;
  private String[] layerStrings = { &amp;quot;Yellow (0)&amp;quot;, &amp;quot;Magenta (1)&amp;quot;, &amp;quot;Cyan (2)&amp;quot;, &amp;quot;Red (3)&amp;quot;, &amp;quot;Green (4)&amp;quot; };&lt;br /&gt;
  private Color[] layerColors = { Color.yellow, Color.magenta, Color.cyan, Color.red, Color.green };&lt;br /&gt;
  private JLayeredPane layeredPane;&lt;br /&gt;
  private JLabel dukeLabel;&lt;br /&gt;
  private JCheckBox onTop;&lt;br /&gt;
  private JComboBox layerList;&lt;br /&gt;
  // Action commands&lt;br /&gt;
  private static String ON_TOP_COMMAND = &amp;quot;ontop&amp;quot;;&lt;br /&gt;
  private static String LAYER_COMMAND = &amp;quot;layer&amp;quot;;&lt;br /&gt;
  // Adjustments to put Duke&amp;quot;s toe at the cursor&amp;quot;s tip.&lt;br /&gt;
  private static final int XFUDGE = 40;&lt;br /&gt;
  private static final int YFUDGE = 57;&lt;br /&gt;
  public LayeredPaneDemo() {&lt;br /&gt;
    setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));&lt;br /&gt;
    // Create and load the duke icon.&lt;br /&gt;
    final ImageIcon icon = new ImageIcon(&amp;quot;yourFile.gif&amp;quot;);&lt;br /&gt;
    // Create and set up the layered pane.&lt;br /&gt;
    layeredPane = new JLayeredPane();&lt;br /&gt;
    layeredPane.setPreferredSize(new Dimension(300, 310));&lt;br /&gt;
    layeredPane.setBorder(BorderFactory.createTitledBorder(&amp;quot;Move the Mouse to Move Duke&amp;quot;));&lt;br /&gt;
    layeredPane.addMouseMotionListener(this);&lt;br /&gt;
    // This is the origin of the first label added.&lt;br /&gt;
    Point origin = new Point(10, 20);&lt;br /&gt;
    // This is the offset for computing the origin for the next label.&lt;br /&gt;
    int offset = 35;&lt;br /&gt;
    // Add several overlapping, colored labels to the layered pane&lt;br /&gt;
    // using absolute positioning/sizing.&lt;br /&gt;
    for (int i = 0; i &amp;lt; layerStrings.length; i++) {&lt;br /&gt;
      JLabel label = createColoredLabel(layerStrings[i], layerColors[i], origin);&lt;br /&gt;
      layeredPane.add(label, new Integer(i));&lt;br /&gt;
      origin.x += offset;&lt;br /&gt;
      origin.y += offset;&lt;br /&gt;
    }&lt;br /&gt;
    // Create and add the Duke label to the layered pane.&lt;br /&gt;
    dukeLabel = new JLabel(icon);&lt;br /&gt;
    if (icon != null) {&lt;br /&gt;
      dukeLabel.setBounds(15, 225, icon.getIconWidth(), icon.getIconHeight());&lt;br /&gt;
    } else {&lt;br /&gt;
      System.err.println(&amp;quot;Duke icon not found; using black square instead.&amp;quot;);&lt;br /&gt;
      dukeLabel.setBounds(15, 225, 30, 30);&lt;br /&gt;
      dukeLabel.setOpaque(true);&lt;br /&gt;
      dukeLabel.setBackground(Color.BLACK);&lt;br /&gt;
    }&lt;br /&gt;
    layeredPane.add(dukeLabel, new Integer(2), 0);&lt;br /&gt;
    // Add control pane and layered pane to this JPanel.&lt;br /&gt;
    add(Box.createRigidArea(new Dimension(0, 10)));&lt;br /&gt;
    add(createControlPanel());&lt;br /&gt;
    add(Box.createRigidArea(new Dimension(0, 10)));&lt;br /&gt;
    add(layeredPane);&lt;br /&gt;
  }&lt;br /&gt;
  private JLabel createColoredLabel(String text, Color color, Point origin) {&lt;br /&gt;
    JLabel label = new JLabel(text);&lt;br /&gt;
    label.setVerticalAlignment(JLabel.TOP);&lt;br /&gt;
    label.setHorizontalAlignment(JLabel.CENTER);&lt;br /&gt;
    label.setOpaque(true);&lt;br /&gt;
    label.setBackground(color);&lt;br /&gt;
    label.setForeground(Color.black);&lt;br /&gt;
    label.setBorder(BorderFactory.createLineBorder(Color.black));&lt;br /&gt;
    label.setBounds(origin.x, origin.y, 140, 140);&lt;br /&gt;
    return label;&lt;br /&gt;
  }&lt;br /&gt;
  // Create the control pane for the top of the frame.&lt;br /&gt;
  private JPanel createControlPanel() {&lt;br /&gt;
    onTop = new JCheckBox(&amp;quot;Top Position in Layer&amp;quot;);&lt;br /&gt;
    onTop.setSelected(true);&lt;br /&gt;
    onTop.setActionCommand(ON_TOP_COMMAND);&lt;br /&gt;
    onTop.addActionListener(this);&lt;br /&gt;
    layerList = new JComboBox(layerStrings);&lt;br /&gt;
    layerList.setSelectedIndex(2); // cyan layer&lt;br /&gt;
    layerList.setActionCommand(LAYER_COMMAND);&lt;br /&gt;
    layerList.addActionListener(this);&lt;br /&gt;
    JPanel controls = new JPanel();&lt;br /&gt;
    controls.add(layerList);&lt;br /&gt;
    controls.add(onTop);&lt;br /&gt;
    controls.setBorder(BorderFactory.createTitledBorder(&amp;quot;Choose Duke&amp;quot;s Layer and Position&amp;quot;));&lt;br /&gt;
    return controls;&lt;br /&gt;
  }&lt;br /&gt;
  // Make Duke follow the cursor.&lt;br /&gt;
  public void mouseMoved(MouseEvent e) {&lt;br /&gt;
    dukeLabel.setLocation(e.getX() - XFUDGE, e.getY() - YFUDGE);&lt;br /&gt;
  }&lt;br /&gt;
  public void mouseDragged(MouseEvent e) {&lt;br /&gt;
  } // do nothing&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    String cmd = e.getActionCommand();&lt;br /&gt;
    if (ON_TOP_COMMAND.equals(cmd)) {&lt;br /&gt;
      if (onTop.isSelected())&lt;br /&gt;
        layeredPane.moveToFront(dukeLabel);&lt;br /&gt;
      else&lt;br /&gt;
        layeredPane.moveToBack(dukeLabel);&lt;br /&gt;
    } else if (LAYER_COMMAND.equals(cmd)) {&lt;br /&gt;
      int position = onTop.isSelected() ? 0 : 1;&lt;br /&gt;
      layeredPane.setLayer(dukeLabel, layerList.getSelectedIndex(), position);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;LayeredPaneDemo&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    // Create and set up the content pane.&lt;br /&gt;
    JComponent newContentPane = new LayeredPaneDemo();&lt;br /&gt;
    newContentPane.setOpaque(true); // content panes must be opaque&lt;br /&gt;
    frame.setContentPane(newContentPane);&lt;br /&gt;
    // Display the window.&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  The JLayeredPane serves as the main component container of a JRootPane. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Integer layer = new Integer(20);&lt;br /&gt;
aLayeredPane.add(aComponent, layer);&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>