MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: text size in GUIKit

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50872] Re: [mg50862] text size in GUIKit
  • From: Jeff Adams <jeffa at wolfram.com>
  • Date: Sat, 25 Sep 2004 01:55:12 -0400 (EDT)
  • References: <200409240841.EAA21793@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On Sep 24, 2004, at 3:41 AM, Murray Eisenberg wrote:

> With the GUIKit, is there some way to force a larger font size for text
> input fields?

Hello,

Most widgets that display text have a "font" property that you can get 
or set.

You can either construct a new instance of a font with an appropriate 
call to
Widget["Font", InitialArguments -> {...}] but normally you want to 
modify the
existing font used by the widget so that you preserve the chosen look 
and feel
font for any given platform.

A convenient method on Widget["Font"] is InvokeMethod[{font, 
"deriveFont"}, fontSize_]
which returns a new instance of the font with only the size changed.

Here are a few examples that modify this basic user interface:

GUIRun[
   Widget["Panel", {
       {Widget["Label", {"text" -> "Input:"}],
         Widget["TextField", {"text" -> "Some text.",
             "columns" -> 12}, Name -> "myText"]}
       }, WidgetLayout -> {"Border" -> {{5, 5}, {5, 10}}}]
   ]

to highlight how you can use the "deriveFont" method or create a
new Widget["Font"] instance based on an existing font or constructed 
anew:

In this first variant we use "deriveFont" with the default font of the 
text field
and change its font size to 36:

GUIRun[
   Widget["Panel", {
       {Widget["Label", {"text" -> "Input:"}],
         Widget["TextField", {"text" -> "Some text.",
             "columns" -> 12}, Name -> "myText"]},
       Script[
         fnt = PropertyValue[{"myText", "font"}];
         newFnt = InvokeMethod[{fnt, "deriveFont"}, 36];
         SetPropertyValue[{"myText", "font"}, newFnt];
         ]
       }, WidgetLayout -> {"Border" -> {{5, 5}, {5, 10}}}]
   ]


Here, we construct a new instance of Widget["Font"] but use the 
existing properties
of the default font again, increasing its current size by 5:

GUIRun[
   Widget["Panel", {
       {Widget["Label", {"text" -> "Input:"}],
         Widget["TextField", {"text" -> "Some text.",
             "columns" -> 12}, Name -> "myText"]},
       Script[
         fnt = PropertyValue[{"myText", "font"}];
         args = {PropertyValue[{fnt, "fontName"}], PropertyValue[{fnt, 
"style"}],
             PropertyValue[{fnt, "size"}] + 5};
         newFnt = Widget["Font", InitialArguments -> args];
         SetPropertyValue[{"myText", "font"}, newFnt];
         ]
       }, WidgetLayout -> {"Border" -> {{5, 5}, {5, 10}}}]
   ]


Lastly, you can also construct a new font from literal names and sizes 
though this
may not work on all platforms depending upon what font names you use:

GUIRun[
   Widget["Panel", {
       {Widget["Label", {"text" -> "Input:"}],
         Widget["TextField", {"text" -> "Some text.",
             "columns" -> 12}, Name -> "myText"]},
       Script[
         args = {"Monospaced", PropertyValue[{"class:java.awt.Font", 
"Bold"}], 18};
         newFnt = Widget["Font", InitialArguments -> args];
         SetPropertyValue[{"myText", "font"}, newFnt];
         ]
       }, WidgetLayout -> {"Border" -> {{5, 5}, {5, 10}}}]
   ]


In all cases above, once you construct a new font instance you can use 
this single font and
set it as the font property value for all or as many widgets in your 
user interface as you want.
You can also give this font instance a name using the Name -> "myFont" 
option and
reference this font in the rest of your user interface using a 
WidgetReference["myFont"] call

Jeff Adams
Wolfram Research


  • Prev by Date: Re: Programing operations with lists
  • Next by Date: Publicon: removing line from table
  • Previous by thread: text size in GUIKit
  • Next by thread: Re: Re: text size in GUIKit