<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjava.awt%2FLayoutManager</id>
		<title>Java by API/java.awt/LayoutManager - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjava.awt%2FLayoutManager"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/java.awt/LayoutManager&amp;action=history"/>
		<updated>2026-04-22T22:40:10Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/java.awt/LayoutManager&amp;diff=1087&amp;oldid=prev</id>
		<title> в 17:43, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/java.awt/LayoutManager&amp;diff=1087&amp;oldid=prev"/>
				<updated>2010-05-31T17:43:48Z</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:43, 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://www.jexp.ru/index.php?title=Java_by_API/java.awt/LayoutManager&amp;diff=1088&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/java.awt/LayoutManager&amp;diff=1088&amp;oldid=prev"/>
				<updated>2010-05-31T14:23:34Z</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;== implements LayoutManager ==&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;
 *&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;
/*&lt;br /&gt;
 * CustomLayoutDemo.java requires one other file:&lt;br /&gt;
 *   DiagonalLayout.java&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.LayoutManager;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class CustomLayoutDemo {&lt;br /&gt;
    public static void addComponentsToPane(Container pane) {&lt;br /&gt;
        pane.setLayout(new DiagonalLayout());&lt;br /&gt;
        pane.add(new JButton(&amp;quot;Button 1&amp;quot;));&lt;br /&gt;
        pane.add(new JButton(&amp;quot;Button 2&amp;quot;));&lt;br /&gt;
        pane.add(new JButton(&amp;quot;Button 3&amp;quot;));&lt;br /&gt;
        pane.add(new JButton(&amp;quot;Button 4&amp;quot;));&lt;br /&gt;
        pane.add(new JButton(&amp;quot;Button 5&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Create the GUI and show it.  For thread safety,&lt;br /&gt;
     * this method should be invoked from the&lt;br /&gt;
     * event-dispatching thread.&lt;br /&gt;
     */&lt;br /&gt;
    private static void createAndShowGUI() {&lt;br /&gt;
        //Create and set up the window.&lt;br /&gt;
        JFrame frame = new JFrame(&amp;quot;CustomLayoutDemo&amp;quot;);&lt;br /&gt;
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
        //Set up the content pane.&lt;br /&gt;
        addComponentsToPane(frame.getContentPane());&lt;br /&gt;
        //Display the window.&lt;br /&gt;
        frame.pack();&lt;br /&gt;
        frame.setVisible(true);&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        //Schedule a job for the event-dispatching thread:&lt;br /&gt;
        //creating and showing this application&amp;quot;s GUI.&lt;br /&gt;
        javax.swing.SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
            public void run() {&lt;br /&gt;
                createAndShowGUI();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * 1.2+ version.  Used by CustomLayoutDemo.java.&lt;br /&gt;
 */&lt;br /&gt;
class DiagonalLayout implements LayoutManager {&lt;br /&gt;
    private int vgap;&lt;br /&gt;
    private int minWidth = 0, minHeight = 0;&lt;br /&gt;
    private int preferredWidth = 0, preferredHeight = 0;&lt;br /&gt;
    private boolean sizeUnknown = true;&lt;br /&gt;
    public DiagonalLayout() {&lt;br /&gt;
        this(5);&lt;br /&gt;
    }&lt;br /&gt;
    public DiagonalLayout(int v) {&lt;br /&gt;
        vgap = v;&lt;br /&gt;
    }&lt;br /&gt;
    /* Required by LayoutManager. */&lt;br /&gt;
    public void addLayoutComponent(String name, Component comp) {&lt;br /&gt;
    }&lt;br /&gt;
    /* Required by LayoutManager. */&lt;br /&gt;
    public void removeLayoutComponent(Component comp) {&lt;br /&gt;
    }&lt;br /&gt;
    private void setSizes(Container parent) {&lt;br /&gt;
        int nComps = parent.getComponentCount();&lt;br /&gt;
        Dimension d = null;&lt;br /&gt;
        //Reset preferred/minimum width and height.&lt;br /&gt;
        preferredWidth = 0;&lt;br /&gt;
        preferredHeight = 0;&lt;br /&gt;
        minWidth = 0;&lt;br /&gt;
        minHeight = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; nComps; i++) {&lt;br /&gt;
            Component c = parent.getComponent(i);&lt;br /&gt;
            if (c.isVisible()) {&lt;br /&gt;
                d = c.getPreferredSize();&lt;br /&gt;
                if (i &amp;gt; 0) {&lt;br /&gt;
                    preferredWidth += d.width/2;&lt;br /&gt;
                    preferredHeight += vgap;&lt;br /&gt;
                } else {&lt;br /&gt;
                    preferredWidth = d.width;&lt;br /&gt;
                }&lt;br /&gt;
                preferredHeight += d.height;&lt;br /&gt;
                minWidth = Math.max(c.getMinimumSize().width,&lt;br /&gt;
                                    minWidth);&lt;br /&gt;
                minHeight = preferredHeight;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Required by LayoutManager. */&lt;br /&gt;
    public Dimension preferredLayoutSize(Container parent) {&lt;br /&gt;
        Dimension dim = new Dimension(0, 0);&lt;br /&gt;
        int nComps = parent.getComponentCount();&lt;br /&gt;
        setSizes(parent);&lt;br /&gt;
        //Always add the container&amp;quot;s insets!&lt;br /&gt;
        Insets insets = parent.getInsets();&lt;br /&gt;
        dim.width = preferredWidth&lt;br /&gt;
                    + insets.left + insets.right;&lt;br /&gt;
        dim.height = preferredHeight&lt;br /&gt;
                     + insets.top + insets.bottom;&lt;br /&gt;
        sizeUnknown = false;&lt;br /&gt;
        return dim;&lt;br /&gt;
    }&lt;br /&gt;
    /* Required by LayoutManager. */&lt;br /&gt;
    public Dimension minimumLayoutSize(Container parent) {&lt;br /&gt;
        Dimension dim = new Dimension(0, 0);&lt;br /&gt;
        int nComps = parent.getComponentCount();&lt;br /&gt;
        //Always add the container&amp;quot;s insets!&lt;br /&gt;
        Insets insets = parent.getInsets();&lt;br /&gt;
        dim.width = minWidth&lt;br /&gt;
                    + insets.left + insets.right;&lt;br /&gt;
        dim.height = minHeight&lt;br /&gt;
                     + insets.top + insets.bottom;&lt;br /&gt;
        sizeUnknown = false;&lt;br /&gt;
        return dim;&lt;br /&gt;
    }&lt;br /&gt;
    /* Required by LayoutManager. */&lt;br /&gt;
    /*&lt;br /&gt;
     * This is called when the panel is first displayed,&lt;br /&gt;
     * and every time its size changes.&lt;br /&gt;
     * Note: You CAN&amp;quot;T assume preferredLayoutSize or&lt;br /&gt;
     * minimumLayoutSize will be called -- in the case&lt;br /&gt;
     * of applets, at least, they probably won&amp;quot;t be.&lt;br /&gt;
     */&lt;br /&gt;
    public void layoutContainer(Container parent) {&lt;br /&gt;
        Insets insets = parent.getInsets();&lt;br /&gt;
        int maxWidth = parent.getWidth()&lt;br /&gt;
                       - (insets.left + insets.right);&lt;br /&gt;
        int maxHeight = parent.getHeight()&lt;br /&gt;
                        - (insets.top + insets.bottom);&lt;br /&gt;
        int nComps = parent.getComponentCount();&lt;br /&gt;
        int previousWidth = 0, previousHeight = 0;&lt;br /&gt;
        int x = 0, y = insets.top;&lt;br /&gt;
        int rowh = 0, start = 0;&lt;br /&gt;
        int xFudge = 0, yFudge = 0;&lt;br /&gt;
        boolean oneColumn = false;&lt;br /&gt;
        // Go through the components&amp;quot; sizes, if neither&lt;br /&gt;
        // preferredLayoutSize nor minimumLayoutSize has&lt;br /&gt;
        // been called.&lt;br /&gt;
        if (sizeUnknown) {&lt;br /&gt;
            setSizes(parent);&lt;br /&gt;
        }&lt;br /&gt;
        if (maxWidth &amp;lt;= minWidth) {&lt;br /&gt;
            oneColumn = true;&lt;br /&gt;
        }&lt;br /&gt;
        if (maxWidth != preferredWidth) {&lt;br /&gt;
            xFudge = (maxWidth - preferredWidth)/(nComps - 1);&lt;br /&gt;
        }&lt;br /&gt;
        if (maxHeight &amp;gt; preferredHeight) {&lt;br /&gt;
            yFudge = (maxHeight - preferredHeight)/(nComps - 1);&lt;br /&gt;
        }&lt;br /&gt;
        for (int i = 0 ; i &amp;lt; nComps ; i++) {&lt;br /&gt;
            Component c = parent.getComponent(i);&lt;br /&gt;
            if (c.isVisible()) {&lt;br /&gt;
                Dimension d = c.getPreferredSize();&lt;br /&gt;
                 // increase x and y, if appropriate&lt;br /&gt;
                if (i &amp;gt; 0) {&lt;br /&gt;
                    if (!oneColumn) {&lt;br /&gt;
                        x += previousWidth/2 + xFudge;&lt;br /&gt;
                    }&lt;br /&gt;
                    y += previousHeight + vgap + yFudge;&lt;br /&gt;
                }&lt;br /&gt;
                // If x is too large,&lt;br /&gt;
                if ((!oneColumn) &amp;amp;&amp;amp;&lt;br /&gt;
                    (x + d.width) &amp;gt;&lt;br /&gt;
                    (parent.getWidth() - insets.right)) {&lt;br /&gt;
                    // reduce x to a reasonable number.&lt;br /&gt;
                    x = parent.getWidth()&lt;br /&gt;
                        - insets.bottom - d.width;&lt;br /&gt;
                }&lt;br /&gt;
                // If y is too large,&lt;br /&gt;
                if ((y + d.height)&lt;br /&gt;
                    &amp;gt; (parent.getHeight() - insets.bottom)) {&lt;br /&gt;
                    // do nothing.&lt;br /&gt;
                    // Another choice would be to do what we do to x.&lt;br /&gt;
                }&lt;br /&gt;
                // Set the component&amp;quot;s size and position.&lt;br /&gt;
                c.setBounds(x, y, d.width, d.height);&lt;br /&gt;
                previousWidth = d.width;&lt;br /&gt;
                previousHeight = d.height;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public String toString() {&lt;br /&gt;
        String str = &amp;quot;&amp;quot;;&lt;br /&gt;
        return getClass().getName() + &amp;quot;[vgap=&amp;quot; + vgap + str + &amp;quot;]&amp;quot;;&lt;br /&gt;
    }&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>