Best way to determine optimal font size given some text in a rectangle

Hi Folks,
I have a preview panel in which I am showing some text for the current selected date using a date format.
I want to increase the size of the applied font so that it scales nicely when the panel in which it is drawn is resized.
I want to know the best way in terms of performance to achieve the target. I did some reading about AffineTransform and determining by checking ina loop which is the correct size, but it does not feel like a good way.
I would appreciate some tips.
Cheers.
Ravi

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;
public class ScaledText extends JPanel {
    String text = "Sample String";
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        Font font = g2.getFont().deriveFont(16f);
        g2.setFont(font);
        FontRenderContext frc = g2.getFontRenderContext();
        int w = getWidth();
        int h = getHeight();
        float[][] data = {
            { h/8f, w/3f, h/12f }, { h/3f, w/4f, h/8f }, { h*3/4f, w/2f, h/16f }
        for(int j = 0; j < data.length; j++) {
            float y = data[j][0];
            float width = data[j][1];
            float height = data[j][2];
            float x = (w - width)/2f;
            Rectangle2D.Float r = new Rectangle2D.Float(x, y, width, height);
            g2.setPaint(Color.red);
            g2.draw(r);
            float sw = (float)font.getStringBounds(text, frc).getWidth();
            LineMetrics lm = font.getLineMetrics(text, frc);
            float sh = lm.getAscent() + lm.getDescent();
            float xScale = r.width/sw;
            float yScale = r.height/sh;
            float scale = Math.min(xScale, yScale);
            float sx = r.x + (r.width - scale*sw)/2;
            float sy = r.y + (r.height + scale*sh)/2 - scale*lm.getDescent();
            AffineTransform at = AffineTransform.getTranslateInstance(sx, sy);
            at.scale(scale, scale);
            g2.setFont(font.deriveFont(at));
            g2.setPaint(Color.blue);
            g2.drawString(text, 0, 0);
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new ScaledText());
        f.setSize(400,400);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
}

Similar Messages

  • Is there any way to change the font size of the text in the Finder Sidebar?

    This may sound like a bit of a dorky question but here goes nothing...
    I am rather near-sighted and in need of new glasses but I am stuck in a holding pattern until I can get a referral to see my eye doctor. Anyway... I have found myself using the Zoom features far more often and increasing the font size in the Finder for the Item Names & Info.
    The problem that I am facing now, is that the font size of the text in the sidebar is FAR SMALLER than the font size of the text of the actual file names & info.
    +*IS THERE ANY WAY TO INCREASE THE FONT SIZE OF THE TEXT IN THE SIDEBAR??*+
    So far I have looked in:
    *The Finder Preferences
    *The Desktop Preference Pane
    *The Appearance Preference Pane
    *The Seeing Tab of the Universal Access Preference Pane
    And to add to my frustration I have also searched the Mac OS X Help AND all of the posts in this thread (back to 1/1/09) that had the word "sidebar" mentioned in them!!
    +*DOES ANYBODY HAVE ANY OTHER IDEAS?? OR IS THIS ONE AREA THAT I AM OUT OF LUCK BECAUSE APPLE DIDN'T FORESEE THIS ISSUE??*+
    Usually, Apple is really very good about foreseeing any possible trouble (ESPECIALLY when it comes to the area of Accessibility for people w/ disabilities!!)
    I do hope that SOMEBODY can help me on this one!!
    Also, I noticed that the size of the text that is on the Toolbar is also the same ITSY BITSY font size as the text on the sidebar, but I am guessing that there is next to nothing that can be done about that!!
    Thanks a Million!!
    +~Kathryn A.+
    P.S. Here is the link to a screenshot that I took that will illustrate my problem more clearly...
    Icon View Screenshot: http://screencast.com/t/gzDONwN3

    Hi! The only way I know of is changing the screen resolution. Tom

  • Is there a way to increase the font size for the "songs" and "artists" lists in the new music app for iPad 2 (iOS 5)? It is too small for me.

    Is there a way to increase the font size for the "songs" and "artists" lists in the "music" app for iPad 2 (iOS 5)? It is smaller than the previous version.

    falkner09 wrote:
    is there really no fix for this?
    It would depend on your definition of "Fix"
    Your iPod touch running OS 4.2 has a ZOOM feature which will enable you to see the screen more clearly.
    To turn Zoom on or off got to:
    Settings > General > Accessibility > Zoom and tap the Zoom On/Off switch.
    _To Zoom in or out_:
    Double-tap the screen with three fingers. By default, the screen is magnified 200 percent. If you manually change the magnification (by using the tap-and-drag gesture, described below), iPod touch automatically returns to that magnification when you zoom in by double-tapping with three fingers.
    Increase magnification: With three fingers, tap and drag toward the top of the screen (to increase magnification) or toward the bottom of the screen (to decrease magnification). The tap-and-drag gesture is similar to a double-tap, except you don’t lift your fingers on the second tap—instead, drag your fingers on the screen. Once you start dragging, you can drag with a single finger.
    _Move around the screen_:
    When zoomed in, drag or flick the screen with three fingers. Once you start dragging, you can drag with a single finger so that you can see more of the screen. Hold a single finger near the edge of the display to pan to that side of the screen image. Move your finger closer to the edge to pan more quickly. When you open a new screen, Zoom always goes to the top-middle of the screen.
    _Large Text_:
    Large Text lets you make the text larger in alerts, and in Calendar, Contacts, Mail, Messages, and Notes. You can choose 20-point, 24-point, 32-point, 40-point, 48-point, or 56-point text.
    Set the text size: In Settings, choose General > Accessibility, tap Large Text, then tap the text size you want.
    I hope this has helped a little - other than this option I think it pretty much is what it is.
    BTW - This information can be found on page 208 of the iPod Touch iOS 4.2 Users Guide.
    Best wishes..
    Ricky

  • What is the best way to verify default heap size in Java

    Hi All,
    What is the best way to verify default heap size in Java ? does it vary over JVM to JVM . I was reading this article http://javarevisited.blogspot.sg/2011/05/java-heap-space-memory-size-jvm.html , and it says default size is 128 MB but When I run following code :
    public static void main(String args[]) {
    int MB = 1024*1024;
    System.out.println(Runtime.getRuntime().totalMemory()/MB);
    It print "870" i.e. 870 MB.
    I am bit confused, what is the best way to verify default heap size in any JVM ?
    Edited by: 938864 on Jun 5, 2012 11:16 PM

    938864 wrote:
    Hi Kayaman,
    Sorry but I don't agree with you on verification part, Why not I can verify it ? to me default means value when I don't specify -Xms and -Xmx and by the way I was testing that program on 32 bit JRE 1.6 on Windows. I am also curious significant difference between 128MB and 870MB I saw, do you see anything obviously wrong ?That spec is outdated. Since Java 6 update 18 (Sun/Oracle implementation) the default maximum heap space is calculated based on total memory availability, but never more than 1GB on 32 bits JVMs / client VMs. On a 64 bits server VM the default can go as high as 32gb.
    The best way to verify ANYTHING is to address multiple sources of information and especially those produced by the source, not some page you find on the big bad internet. Even wikipedia is a whole lot better than any random internet site IMO. That's common sense, I can't believe you put much thought into it that you have to ask in a forum.

  • Is there a way to change the font size and color of text in the calendar app?

    Does anyone know a way of changing the font size and color of text in the calendar app that comes with the iPad 2?  It is very hard to see the small gray numbers on the calendar.  Thanks

    Looks like you didn't get a reply on your post, but it is still a problem.  Font size is supposedly changeable via "Accessibility" in Settings, but it doesn't work.  You can turn on "Zoom".

  • Is there any way to increase the font size in the Creative Cloud. Using a Lenovo Yoga 2 with 14" screen and care barely see the menus

    Is there any way to increase the font size in the Creative Cloud. Using a Lenovo Yoga 2 with 14" screen and care barely see the menus.

    In short, no. There is no fix yet. They only barely acknowledge there is a problem. The "fix" is to enable 200% UI scaling which makes everything comically huge and unusable. This is pretty much of a joke. A really, really EXPENSIVE joke.

  • Best way to determine insertion order of items in cache for FIFO?

    I want to implement a FIFO queue. I plan on one producer placing unprocessed Orders into a cache. Then multiple consumers will each invoke an EntryProcessor which gets the oldest unprocessed order, sets it processed=true and returns it. What's the best way to determine the oldest object based on insertion order? Should I timestamp the objects with a trigger when they're added to the cache and then index by that value? Or is there a better way? maybe something coherence automatically saves when objects are inserted? Also, it's not critical that the processing order be precisely FIFO, close is good enough.
    Also, since the consumer won't know the key value for the object it will receive, how could the consumer call something like this so it doesn't violate Constraints on Re-entrant Calls? http://wiki.tangosol.com/display/COH34UG/Constraints+on+Re-entrant+Calls
    Thanks,
    Andrew

    Ok, I think I can see where you are coming from now...
    By using a queue for each for each FIX session then you will be experiencing some latency as data is pushed around inside the cluster between the 'owning node' for the order and the location of the queue; but if this is acceptable then great. The number of hops within the cluster and hence the latency will depend on where and how you detect changes to your orders. The advantage of assiging specific orders to each queue is that this will not change should the cluster rebalance; however you should consider what happens if the node controlling a specific FIX session is lost - do you recover from FIX log? If so where is that log kept? Remember to consider what happens if your cluster splits, such that the node with the FIX session is still alive, but is separated from the rest of the cluster. In examining these failure cases you may decide that it is easier to use Coherence's in-built partitioning to assign orders to sessions father than an attribute of order object.
    snidely_whiplash wrote:
    Only changes to orders which result in a new order or replace needing to be sent cause an action by the FIX session. There are several different mechanisms you could use to detect changes to your orders and hence decide if they need to be enqueued:
    1. Use a post trigger that is fired on order insert/update and performs the filtering of changes and if necessary adds the item to the FIX queue
    2. Use a cache store that does the same as (1)
    3. Use an entry processor to perform updates to the order object (as I believe you previously mentioned) and performs logic in (1)
    4. Use a CQC on the order cache
    5. A map listener on the order cache
    The big difference between 1-3 and 4, 5 is that the CQC is i) a SPOF ii) not likely located in the same place as your order object or the queue (assuming that queue is in fact an object in another cache), iii) asynchronously fired hence introducing latency. Also note that the CQC will store your order objects locally whereas a map listener will not.
    (1) and (3) will give you access to both old and new values should that be necessary for your filtering logic.
    Note you must be careful not to make any re-entrant calls with any of 1-3. That means if you are adding something to a FIX queue object in another cache (say using an entry processor) then it should be on a different cache service.
    snidely_whiplash wrote:
    If I move to a CacheStore based setup instead of the CQC based one then any change to an order, including changes made when executions or rejects return on the FIX session will result in the store() method being called which means it will be called unnecessarily a lot. It would be nice if I could specify the CacheStore only store() certain types of changes, ie. those that would result in sending a FIX message. Anything like that possible?There is negligible overhead in Coherence calling your store() method; assuming that your code can decide if anything FIX-related needs to be done based only on the new value of the order object then this should be very fast indeed.
    snidely_whiplash wrote:
    What's a partitioned "token cache"?This is a technique I have used in the past for running services. You create a new partitioned cache into which you place 'tokens' representing a user-defined service that needs to be run. The insertion/deletion of a token in the backing map fires a backing map listener to start/stop a service +(not there are 2 causes of insert/delete in a backing map - i) a user ii) cluster repartitioning)+. In this case that service might be a fix session. If you need to designate a specific member on which a service needs to run then you could add the member id to the token object; however you must be careful that unless you write your own partitioning strategy the token will likely not live on the same cache member as the token indicates; in which case you would want a ful map listener or CQC to listen for tokens rather than a backing map listener
    I hope that's useful rather than confusing!
    Paul

  • Any way to enlarge base font size in Safari?

    Simple question. Looked for answer, can't find. I can resize each page with finger gesture, but am looking for a basic resize that stays on all the time. Thanks.

    On second thought -- the way PB does persistent font size chugs is annoying. it first renders each new page at the STD size, then snaps it up to new size. This makes page loading slower by noticeable amount. Very annoying. Looking elsewhere now.

  • Is there a way to increase the font size in the sidebar of Mac mail and the Finder when running OS 10.6.8?

    Is there a way to increase the font size in the sidebar of Mac mail and the Finder when running OS 10.6.8?

    The only way to increase the size of the onscreen text in the Finder Menu Bar and in the Side bar in Finder Windows is to change the screen resolution in the OS X Preferences Pane under the Displays icon.
    What Mac and screen size are you using?

  • Best way of partitioning the huge size table in oracle 11gr2

    hi,
    OS: linux
    DB: oracle 11gR2
    table size is about 2T and single table space with multiple dbf files in ASM,
    table partition with dbms.redefinition is running past 2 days (range partition).. its running but not that fast..
    note: exchange partition is too slow.. hence not used..
    what is the best way of doing the huge size table partition. please suggest, thanks.

    >
    what is the best way of doing the huge size table partition
    >
    A few questions
    1. Is that an OLTP or OLAP table?
    2. Is all of the data still needed online or is some of it archivable?
    3. What type of partitiioning are you doing? RANGE? LIST? COMPOSITE?
    4. Why do you you say 'exchange partition is too slow' - did you do a test?
    For example if data will be partitioned by create date then one stragety is to initially put all existing data into the root partition of a range partitioned table. Then you can start using new partitions for new incoming data and take your time to partition the current data.

  • Why Acrobat x professional is changing the text formatting specifically the font family  and the font size of the text in my pdf on exporting it to Microsoft word file format ?How should i stop Acrobat x professional from doing that so that i get an exact

    Why Acrobat x professional is changing the text formatting specifically the font family  and the font size of the text in my pdf on exporting it to Microsoft word file format ?How should i stop Acrobat x professional from doing that so that i get an exactly same word file on exporting it from its pdf counterpart?

    I was testing the preciseness & efficiency of Adobe acrobat x professional's doc conversion capabilities. As i have to take a document editing project in future which is going to need lot of pdf to word and vice versa conversions . What I did was I created a test word document converted into a pdf using a pdf maker in my word 2007 , Acrobat did convert the document from word to pdf keeping everything in the source file intact , However when i tried the other way round and attempted to convert the same pdf to word 2007 file format I lost my formatting ?So the font that I used to create the pdf are the ones taken from word 2007 which i believe is using the fonts that are installed in my computer. Any suggestions on how to preserve the formatting of the document after converting it from pdf to word file format?
    Regards
    Mike

  • Is there a way to increase the icon size (and the text below) without using zoom?  I am trying to help out someone who has moderate visual impairment that does not want to use zoom just to see the icons and their labels.

    Is there a way to increase the icon size (and the text below) without using zoom in iOS 7?  I am trying to help out someone who has moderate visual impairment that does not want to use zoom just to see the icons and their labels.

    Hello Apple.
    It seems you have gone to great lengths to improve accessibility in many areas of the iPad. Why was this obvious problem with icon text size missed?  (It's not with the Mac.). And for so long too.
    Do you employ people with actual accessibility problems to help you do UI design?
    I think too, that some buttons are too close for people who might have motor control problems.
    I love my iPad but I fear as I age, the iPad might not keep up with me.

  • In putting together a book I can move photos onto a page and enlarge the picture but is there a way to reduce the picture size? some cases I want a smaller picture and if I change the size of the picture box I only get a portion of the image. I wnt to red

    picture size...in putting together a book I can move photos onto a page and enlarge the picture but is there a way to reduce the picture size? some cases I want a smaller picture and if I change the size of the picture box I only get a portion of the image. I want to reduce the image to fit the size of the box.

    If you right click on the image on the page in the context menu select photo box alignment and then select one of scale to fit {centered, Left-aligned, Right-aligned}
    That should do what you are loking for.

  • How to change the font size of the text that is revolving ?

    Hi there,
    I am using the Revolution theme.
    How to change the font size of the text that is revolving (on the first menu page) ?
    Thanks

    You can't.  That's hard coded into the theme.
    OT

  • In InDesign, how does one determine the pixel size of a text box? Specifically, we need to write text to specifications of 600 pixel width, and have no idea a) how to scale a text box to specific pixel width, b) how to

    This may be a basic question... but in InDesign, how does one determine the pixel size of a text box? Specifically, we need to write text to specifications of 600 pixel width, and have no idea a) how to scale a text box to specific pixel width, b) how to determine what word count we can fit in, and c) how to do it in a table? Thanks!

    Set your ruler increments to pixels Preferences>Units & Increments. You can fill the text box with placeholder text Type>Fill with Placeholder text and get a word count from the Info panel with Show Options turned on from the flyout.
    From the Transform panel you can set a text box's width and height

Maybe you are looking for

  • Embedding fonts in Bridge (Photoshop CS5)

    Hi folks! I'm sorry for posting but I still have trouble with creating PDF via Bridge. I have sveral PSD-Files (CS5 made) using several image- and textlayers. Now I want to create multipage-PDF using Bridge that comes with PS CS5. Works fine so far b

  • Is it possible to force a single decimal in a specific column in the formula?

    I am working with a report where the decimal placement needs to change in different columns of the same row (due to unions). Therefore, I am looking to show only 1 digit after the decimal point in one cell out of the whole row. Is there a formula I c

  • How To Load A Document From An Array ?

    Hi All If i have an xml file <WhitetimeDocuments>      <documents>           <id>WhitetimeIntro</id>           <name>Introduction To White Time</name>           <location>WT_Intro.txt</location>      </documents>      <documents>           <id>Whitet

  • Problem with Local Intranet in IE 11

    Hi We are experiencing a strange problem with Local Intranet in IE 11. We have a public company site which has been put into the Local Intranet site. The site contains content from 3 internal sites, which of course are part of Local Intranet per defa

  • Can't Upload to YouTube

    Hello. I was trying to upload a video to YouTube, but I found the account connection page is broken. Here is a video of the problem: https://www.youtube.com/watch?v=awtQG6VlcOg Any suggestions? Thanks.