epubjs
Version:
Render ePub documents in the browser, across many devices
38 lines (34 loc) • 5.43 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Absolute Positioning</title><link rel="stylesheet" href="core.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"/></head><body><div class="sect1" title="Absolute Positioning"><div class="titlepage"><div><div><h1 class="title"><a id="learnjava3-CHP-19-SECT-8"/>Absolute Positioning</h1></div></div></div><p><a id="I_indexterm19_id809003" class="indexterm"/>It’s possible to set the layout manager to <code class="literal">null</code>: no layout control. You might do this to
position an object on the display at absolute coordinates. This is usually
not the right approach. Components might have different minimum sizes on
different platforms, so your interface would not be very portable.</p><p>The following example doesn’t use a layout manager and works with
absolute coordinates instead:</p><a id="I_19_tt1134"/><pre class="programlisting"> <code class="c1">//file: MoveButton.java</code>
<code class="kn">import</code> <code class="nn">java.awt.*</code><code class="o">;</code>
<code class="kn">import</code> <code class="nn">java.awt.event.*</code><code class="o">;</code>
<code class="kn">import</code> <code class="nn">javax.swing.*</code><code class="o">;</code>
<code class="kd">public</code> <code class="kd">class</code> <code class="nc">MoveButton</code> <code class="kd">extends</code> <code class="n">JPanel</code> <code class="o">{</code>
<code class="n">JButton</code> <code class="n">button</code> <code class="o">=</code> <code class="k">new</code> <code class="n">JButton</code><code class="o">(</code><code class="s">"I Move"</code><code class="o">);</code>
<code class="kd">public</code> <code class="nf">MoveButton</code><code class="o">()</code> <code class="o">{</code>
<code class="n">setLayout</code><code class="o">(</code><code class="kc">null</code><code class="o">);</code>
<code class="n">add</code><code class="o">(</code><code class="n">button</code><code class="o">);</code>
<code class="n">button</code><code class="o">.</code><code class="na">setSize</code><code class="o">(</code><code class="n">button</code><code class="o">.</code><code class="na">getPreferredSize</code><code class="o">());</code>
<code class="n">button</code><code class="o">.</code><code class="na">setLocation</code><code class="o">(</code><code class="mi">20</code><code class="o">,</code> <code class="mi">20</code><code class="o">);</code>
<code class="n">addMouseListener</code><code class="o">(</code><code class="k">new</code> <code class="n">MouseAdapter</code><code class="o">()</code> <code class="o">{</code>
<code class="kd">public</code> <code class="kt">void</code> <code class="nf">mousePressed</code><code class="o">(</code><code class="n">MouseEvent</code> <code class="n">e</code><code class="o">)</code> <code class="o">{</code>
<code class="n">button</code><code class="o">.</code><code class="na">setLocation</code><code class="o">(</code><code class="n">e</code><code class="o">.</code><code class="na">getX</code><code class="o">(),</code> <code class="n">e</code><code class="o">.</code><code class="na">getY</code><code class="o">());</code>
<code class="o">}</code>
<code class="o">});</code>
<code class="o">}</code>
<code class="kd">public</code> <code class="kd">static</code> <code class="kt">void</code> <code class="nf">main</code><code class="o">(</code><code class="n">String</code><code class="o">[]</code> <code class="n">args</code><code class="o">)</code> <code class="o">{</code>
<code class="n">JFrame</code> <code class="n">frame</code> <code class="o">=</code> <code class="k">new</code> <code class="n">JFrame</code><code class="o">(</code><code class="s">"MoveButton"</code><code class="o">);</code>
<code class="n">frame</code><code class="o">.</code><code class="na">setDefaultCloseOperation</code><code class="o">(</code> <code class="n">JFrame</code><code class="o">.</code><code class="na">EXIT_ON_CLOSE</code> <code class="o">);</code>
<code class="n">frame</code><code class="o">.</code><code class="na">setSize</code><code class="o">(</code><code class="mi">250</code><code class="o">,</code> <code class="mi">200</code><code class="o">);</code>
<code class="n">frame</code><code class="o">.</code><code class="na">setLocation</code><code class="o">(</code><code class="mi">200</code><code class="o">,</code> <code class="mi">200</code><code class="o">);</code>
<code class="n">frame</code><code class="o">.</code><code class="na">setContentPane</code><code class="o">(</code><code class="k">new</code> <code class="n">MoveButton</code><code class="o">());</code>
<code class="n">frame</code><code class="o">.</code><code class="na">setVisible</code><code class="o">(</code><code class="kc">true</code><code class="o">);</code>
<code class="o">}</code>
<code class="o">}</code></pre><p>Click in the window area outside of the button to move the button to
a new location. Try resizing the window and note that the button stays at
a fixed position relative to the window’s upper-left corner.</p></div></body></html>