Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.gui > #147

Re: comp.lang.java.gui FA

From "usenet" <usenet@THRWHITE.remove-dii-this>
Subject Re: comp.lang.java.gui FA
Message-ID <0T3kvcp5Isfc@uni.chka.de> (permalink)
Newsgroups comp.lang.java.gui
References <computer-lang/java/gui/faq_1163655788@rtfm.mit.edu>
Date 2011-04-27 15:25 +0000
Organization TDS.net

Show all headers | View raw


  To: comp.lang.java.gui
In comp.lang.java.gui Thomas Weidenfeller <cljg_faq@gmx.de> wrote:


> Q3.2 How do I update the GUI from another thread?

> If you have to update the GUI from another thread (e.g. once you
> offloaded a time consuming task from the EDT to another thread) you
> should use the javax.swing.SwingUtilities.invokeLater() or
> javax.swing.SwingUtilities.invokeAndWait(). Often you want
> invokeLater().

invokeAndWait is broken and should not be used (It uses wait() without
testing for success).



> Q4.3 What is the right way to start a Swing GUI?

> Sun almost silently changed the recommended GUI startup procedure. At
> the beginning of 2004 the examples in Sun's GUI tutorial were changed,
> and some rather short "explanation" was given. The explanation can be
> summarized as: "There is a threading bug somewhere in Swing. To work
> around, already build and start the GUI from the EDT". No more useful
> information is provided, e.g. if Sun knows the root cause of the bug
                                whether

(clear?)

> and intends to fix it.

I doubt this is a single bug.

> So now the official way to build and start (calling setVisible(true))
> the GUI is to use invokeLater(). The shortest version of a GUI
> application's main() method becomes:

>     public static void main(String[] args) {
>         invokeLater(new Runnable() {

Misses "SwingUtilities." or "EventQueue."

>             public void run() {
>                 //
>                 // Build and start the GUI here.
>                 //
>             }
>         });
>     }



> Q5.8 How Do I center a window on the screen?  How do I get the
>      screen size?

[...]

> 2) Since 1.4:

>         Window.setLocationRelativeTo(null); 

I doubt this works in a multi-screen environment without a virtual device.



> Q5.10 How to ensure a particular aspect ration of a window?

Isn't it called "aspect ratio"?


> Q5.13 My window layout is displayed incorrectly. I have to move
>       the window, before the layout is right.  What's wrong?

> It is likely that you have changed the layout after you showed the
> window. The layout is not redone in such cases, unless you tell the
> container to do so. It is best to first finish the construction of
> the window before showing it. If you really can't do this, then

What is meant by "changed the layout"?

> Alternatively one can call pack() after invalidating the window.

But this will change the window's size.


> Q6.1.3 How to create a non-rectangular widget?

> The boundaries of a Component (widget) in Java are always rectangular.
> Non-rectangular Components can be faked by implementing Components with
> a transparent background.

> Java will still treat these components as rectangular objects. E.g. The
> standard layout managers always use the rectangular boundaries to
> layout Components. If another behavior is required for transparent
> Components (e.g. partly overlapping boundaries) custom layout mangers
> need to be implemented.

But with respect to mouse interactions (i.e. "which component is top at
a specific point on a screen), Component.contains can be used to make
a component not contains all the pixels within its boundary.



> Q6.1.5 How do I find a component's top-level container (e.g.
>        the window)?

> Use
>         SwingUtilities.getRoot()

No, SwingUtilities.getWindowAncestor()




> Q6.3.2 I have problems using the Swing HTML parser to parse all
>        kinds of HTML. Is this normal?

> Unfortunately it is. The Swing HTML parser is the old HotJava parser
> (Sun's pure Java web browser, once a separate product). It is limited
> and hasn't been updated for a long time. In principle it can deal with

Not true. For example, all HTML 4.01 character entities have been added.



Christian

---
 * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24

Back to comp.lang.java.gui | Previous | Next | Find similar


Thread

Re: comp.lang.java.gui FA "usenet" <usenet@THRWHITE.remove-dii-this> - 2011-04-27 15:25 +0000

csiph-web