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


Groups > comp.lang.java.programmer > #36076

Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this?

Newsgroups comp.lang.java.programmer
Date 2016-12-09 11:35 -0800
References <75624c6e-6a78-4e8a-82a4-4ff2556cc241@googlegroups.com>
Message-ID <5bda0936-09ee-4eea-8001-e0ad17f31b0b@googlegroups.com> (permalink)
Subject Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this?
From The Kreepy Gamer <tylerc2077@gmail.com>

Show all headers | View raw


Thanks for your help! I hope I got it right this time. :)


In my GUI program, I have a thread with a while loop that resizes the text to fit into the various JLabels and JButtons that are on it. But sometimes when the text is a certain width it will get bigger and smaller. For example, it will have text in the font size 26, it loops and resizes it to 20. Then it loops again and changes it back to 26, creating a "jiggling" effect.

import java.awt.Component;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Fonts { 

   static JLabel label = new JLabel("text that \"jiggles\"                "); 

   public Fonts() {
      JFrame window = new JFrame("Test");
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      window.setSize(300,300);
      
      label.setHorizontalAlignment(JLabel.CENTER);
      
      window.add(label);
      window.setVisible(true);
   }

   public static void main(String[] args) { 
      new Fonts();
      Thread thread = new Thread(new Runnable() {
            public void run() {
                  while (true) {
                     label.setFont(getMaxFontSize(label,label.getText()));
                  }
            }
      });
      thread.run();
   } 

   public static Font getMaxFontSize(Component comp, String text) { 
      Font compFont = comp.getFont(); 
      String compText = text; 
      int stringWidth = comp.getFontMetrics(compFont)
                        .stringWidth(compText); 
      int compWidth = comp.getWidth()-75; 
      
      if (stringWidth == 0) { 
         stringWidth++; 
      }
      
      while (compWidth < 0) {
    	  compWidth++;
      }
      
      double widthRatio = (double)compWidth / (double)stringWidth; 
      
      int newFontSize = (int)(compFont.getSize() * widthRatio); 
      int compHeight = comp.getHeight(); 
      
      int fontSizeToUse = Math.min(newFontSize, compHeight); 
      if (fontSizeToUse < 1) { 
         return new Font(compFont.getName(), Font.PLAIN, 1); 
      } 
      return new Font(compFont.getName(), Font.PLAIN, fontSizeToUse); 
   }
}

Does anyone know why it is doing this, and how I could fix it?

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? The Kreepy Gamer <tylerc2077@gmail.com> - 2016-12-06 15:21 -0800
  Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-12-07 13:36 -0600
  Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? The Kreepy Gamer <tylerc2077@gmail.com> - 2016-12-08 12:48 -0800
    Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-12-08 15:30 -0600
    Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Martin Gregorie <martin@address-in-sig.invalid> - 2016-12-08 22:17 +0000
      Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Arne Vajhøj <arne@vajhoej.dk> - 2016-12-08 20:09 -0500
      Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Gene Wirchenko <genew@telus.net> - 2016-12-09 09:07 -0800
        Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Martin Gregorie <martin@address-in-sig.invalid> - 2016-12-09 20:01 +0000
  Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Nigel Wade <nmw@local.domain> - 2016-12-09 10:54 +0000
  Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? The Kreepy Gamer <tylerc2077@gmail.com> - 2016-12-09 11:35 -0800
    Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-12-09 15:32 -0500
    Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Martin Gregorie <martin@address-in-sig.invalid> - 2016-12-09 21:22 +0000
      Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Martin Gregorie <martin@address-in-sig.invalid> - 2016-12-12 12:08 +0000
    Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Arne Vajhøj <arne@vajhoej.dk> - 2016-12-11 20:48 -0500
  Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? The Kreepy Gamer <tylerc2077@gmail.com> - 2016-12-12 11:18 -0800
    Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-12-12 14:22 -0500
    Re: When resizing text to fill a JLabel the text sometimes "jiggles", how do I fix this? Arne Vajhøj <arne@vajhoej.dk> - 2016-12-12 20:15 -0500

csiph-web