<?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_Tutorial%2FSwing%2FJWindow</id>
		<title>Java Tutorial/Swing/JWindow - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FJWindow"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JWindow&amp;action=history"/>
		<updated>2026-04-22T01:59:07Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JWindow&amp;diff=3825&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JWindow&amp;diff=3825&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://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JWindow&amp;diff=3826&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JWindow&amp;diff=3826&amp;oldid=prev"/>
				<updated>2010-05-31T15:31: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;==  Center window ==&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;
 * Copyright (c) 1998-2002 Carnegie Mellon University.  All rights&lt;br /&gt;
 * reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 * 2. Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer in&lt;br /&gt;
 *    the documentation and/or other materials provided with the&lt;br /&gt;
 *    distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS&amp;quot;&amp;quot; AND&lt;br /&gt;
 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY&lt;br /&gt;
 * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&lt;br /&gt;
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&lt;br /&gt;
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&lt;br /&gt;
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&lt;br /&gt;
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&lt;br /&gt;
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
public abstract class Win {&lt;br /&gt;
    public static void center (Window window, Component ref) {&lt;br /&gt;
        position (window, ref, 0.5, 0.5);&lt;br /&gt;
    }&lt;br /&gt;
    public static void position (Window frame, Component ref, &lt;br /&gt;
                                 double xfrac, double yfrac) {&lt;br /&gt;
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();&lt;br /&gt;
        Dimension size = frame.getSize();&lt;br /&gt;
        Dimension refSize = (ref != null) &lt;br /&gt;
            ? ref.getSize() &lt;br /&gt;
            : screenSize;&lt;br /&gt;
        Point origin = (ref != null)&lt;br /&gt;
            ? ref.getLocationOnScreen () &lt;br /&gt;
            : new Point (0, 0);&lt;br /&gt;
        int x = origin.x + relativePoint (xfrac, refSize.width, size.width);&lt;br /&gt;
        int y = origin.y + relativePoint (yfrac, refSize.height, size.height);&lt;br /&gt;
        // make sure frame is entirely on screen&lt;br /&gt;
        x = Math.max (0, Math.min (screenSize.width - size.width, x));&lt;br /&gt;
        y = Math.max (0, Math.min (screenSize.height - size.height, y));&lt;br /&gt;
        &lt;br /&gt;
        frame.setLocation (x, y);&lt;br /&gt;
    }&lt;br /&gt;
    static int relativePoint (double frac, int parentLength, int childLength) {&lt;br /&gt;
        if (frac &amp;lt; 0)&lt;br /&gt;
            return (int) (frac * childLength);&lt;br /&gt;
        else if (frac &amp;gt; 1)&lt;br /&gt;
            return (int) (parentLength + (frac - 2) * childLength);&lt;br /&gt;
        else&lt;br /&gt;
            return (int) (frac * (parentLength - childLength));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static Frame findFrame (Component comp) {&lt;br /&gt;
        for (; comp!=null; comp = comp.getParent ())&lt;br /&gt;
            if (comp instanceof Frame) {&lt;br /&gt;
                return (Frame)comp;&lt;br /&gt;
            }&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    public static Frame findFrameOrMakeFrame (Component parent) {&lt;br /&gt;
        return (parent != null) ? findFrame (parent) : new Frame ();&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;
==  Center Within Parent ==&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;
 * Copyright (C) 2001-2004 Colin Bell&lt;br /&gt;
 * colbell@users.sourceforge.net&lt;br /&gt;
 *&lt;br /&gt;
 * This library is free software; you can redistribute it and/or&lt;br /&gt;
 * modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 * License as published by the Free Software Foundation; either&lt;br /&gt;
 * version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This library is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 * Lesser General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 * You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 * License along with this library; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 */&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.FontMetrics;&lt;br /&gt;
import java.awt.Frame;&lt;br /&gt;
import java.awt.GraphicsConfiguration;&lt;br /&gt;
import java.awt.GraphicsDevice;&lt;br /&gt;
import java.awt.GraphicsEnvironment;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Point;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.Window;&lt;br /&gt;
import java.awt.geom.Rectangle2D;&lt;br /&gt;
import java.beans.PropertyVetoException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JInternalFrame;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
/**&lt;br /&gt;
 * Common GUI utilities accessed via static methods.&lt;br /&gt;
 * &lt;br /&gt;
 * @author &lt;br /&gt;
 */&lt;br /&gt;
public class GUIUtils {&lt;br /&gt;
  private static JFrame _mainFrame;&lt;br /&gt;
  /**&lt;br /&gt;
   * Centers &amp;lt;CODE&amp;gt;wind&amp;lt;/CODE&amp;gt; within its parent. If it has no parent then&lt;br /&gt;
   * center within the screen. If centering would cause the title bar to go&lt;br /&gt;
   * above the parent (I.E. cannot see the titlebar and so cannot move the&lt;br /&gt;
   * window) then move the window down.&lt;br /&gt;
   * &lt;br /&gt;
   * @param wind&lt;br /&gt;
   *          The Window to be centered.&lt;br /&gt;
   * &lt;br /&gt;
   * @throws IllegalArgumentException&lt;br /&gt;
   *           If &amp;lt;TT&amp;gt;wind&amp;lt;/TT&amp;gt; is &amp;lt;TT&amp;gt;null&amp;lt;/TT&amp;gt;.&lt;br /&gt;
   */&lt;br /&gt;
  public static void centerWithinParent(Window wind) {&lt;br /&gt;
    if (wind == null) {&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;null Window passed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    final Container parent = wind.getParent();&lt;br /&gt;
    if (parent != null &amp;amp;&amp;amp; parent.isVisible()) {&lt;br /&gt;
      center(wind, new Rectangle(parent.getLocationOnScreen(), parent.getSize()));&lt;br /&gt;
    } else {&lt;br /&gt;
      centerWithinScreen(wind);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Centers passed internal frame within its desktop area. If centering would&lt;br /&gt;
   * cause the title bar to go off the top of the screen then move the window&lt;br /&gt;
   * down.&lt;br /&gt;
   * &lt;br /&gt;
   * @param frame&lt;br /&gt;
   *          The internal frame to be centered.&lt;br /&gt;
   * &lt;br /&gt;
   * @throws IllegalArgumentException&lt;br /&gt;
   *           If &amp;lt;TT&amp;gt;frame&amp;lt;/TT&amp;gt; is &amp;lt;TT&amp;gt;null&amp;lt;/TT&amp;gt;.&lt;br /&gt;
   */&lt;br /&gt;
  public static void centerWithinDesktop(JInternalFrame frame) {&lt;br /&gt;
    if (frame == null) {&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;null JInternalFrame passed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    final Container parent = frame.getDesktopPane();&lt;br /&gt;
    if (parent != null &amp;amp;&amp;amp; parent.isVisible()) {&lt;br /&gt;
      center(frame, new Rectangle(new Point(0, 0), parent.getSize()));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Centers &amp;lt;CODE&amp;gt;wind&amp;lt;/CODE&amp;gt; within the screen. If centering would cause the&lt;br /&gt;
   * title bar to go off the top of the screen then move the window down.&lt;br /&gt;
   * &lt;br /&gt;
   * @param wind&lt;br /&gt;
   *          The Window to be centered.&lt;br /&gt;
   * &lt;br /&gt;
   * @throws IllegalArgumentException&lt;br /&gt;
   *           If &amp;lt;TT&amp;gt;wind&amp;lt;/TT&amp;gt; is &amp;lt;TT&amp;gt;null&amp;lt;/TT&amp;gt;.&lt;br /&gt;
   */&lt;br /&gt;
  public static void centerWithinScreen(Window wind) {&lt;br /&gt;
    if (wind == null) {&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;null Window passed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    final Toolkit toolKit = Toolkit.getDefaultToolkit();&lt;br /&gt;
    final Rectangle rcScreen = new Rectangle(toolKit.getScreenSize());&lt;br /&gt;
    final Dimension windSize = wind.getSize();&lt;br /&gt;
    final Dimension parentSize = new Dimension(rcScreen.width, rcScreen.height);&lt;br /&gt;
    if (windSize.height &amp;gt; parentSize.height) {&lt;br /&gt;
      windSize.height = parentSize.height;&lt;br /&gt;
    }&lt;br /&gt;
    if (windSize.width &amp;gt; parentSize.width) {&lt;br /&gt;
      windSize.width = parentSize.width;&lt;br /&gt;
    }&lt;br /&gt;
    center(wind, rcScreen);&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Centers &amp;lt;CODE&amp;gt;wind&amp;lt;/CODE&amp;gt; within the passed rectangle.&lt;br /&gt;
   * &lt;br /&gt;
   * @param wind&lt;br /&gt;
   *          The Window to be centered.&lt;br /&gt;
   * @param rect&lt;br /&gt;
   *          The rectangle (in screen coords) to center &amp;lt;CODE&amp;gt;wind&amp;lt;/CODE&amp;gt;&lt;br /&gt;
   *          within.&lt;br /&gt;
   * &lt;br /&gt;
   * @throws IllegalArgumentException&lt;br /&gt;
   *           If &amp;lt;TT&amp;gt;Window&amp;lt;/TT&amp;gt; or &amp;lt;TT&amp;gt;Rectangle&amp;lt;/TT&amp;gt; is &amp;lt;TT&amp;gt;null&amp;lt;/TT&amp;gt;.&lt;br /&gt;
   */&lt;br /&gt;
  private static void center(Component wind, Rectangle rect) {&lt;br /&gt;
    if (wind == null || rect == null) {&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;null Window or Rectangle passed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    Dimension windSize = wind.getSize();&lt;br /&gt;
    int x = ((rect.width - windSize.width) / 2) + rect.x;&lt;br /&gt;
    int y = ((rect.height - windSize.height) / 2) + rect.y;&lt;br /&gt;
    if (y &amp;lt; rect.y) {&lt;br /&gt;
      y = rect.y;&lt;br /&gt;
    }&lt;br /&gt;
    wind.setLocation(x, y);&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;
==  Difference between JFrame and JWindow ==&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 javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JWindow;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new JFrame(&amp;quot;The Frame&amp;quot;);&lt;br /&gt;
    f.setSize(300, 300);&lt;br /&gt;
    f.setLocation(100, 100);&lt;br /&gt;
    JWindow w = new JWindow();&lt;br /&gt;
    w.setSize(300, 300);&lt;br /&gt;
    w.setLocation(500, 100);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
    w.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;
==  Extending JWindow ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you need to extend JWindow, the class has two protected methods of importance:&amp;lt;/p&amp;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;
protected void windowInit()&lt;br /&gt;
protected JRootPane createRootPane()&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;
==  Have borders on a JWindow/JFrame ==&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.FlowLayout;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JWindow;&lt;br /&gt;
public class Main{&lt;br /&gt;
  public static void main(String s[]) {&lt;br /&gt;
    JWindow win = new JWindow();&lt;br /&gt;
    JPanel pan = new JPanel();&lt;br /&gt;
    win.add(pan, &amp;quot;Center&amp;quot;);&lt;br /&gt;
    pan.setLayout(new FlowLayout());&lt;br /&gt;
    pan.add(new JButton(&amp;quot;Hello&amp;quot;));&lt;br /&gt;
    win.setSize(200, 200);&lt;br /&gt;
    win.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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>