当前位置: 首页>>代码示例>>Java>>正文


Java FontMetrics.charWidth方法代码示例

本文整理汇总了Java中java.awt.FontMetrics.charWidth方法的典型用法代码示例。如果您正苦于以下问题:Java FontMetrics.charWidth方法的具体用法?Java FontMetrics.charWidth怎么用?Java FontMetrics.charWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.awt.FontMetrics的用法示例。


在下文中一共展示了FontMetrics.charWidth方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: setPreferredWidth

import java.awt.FontMetrics; //导入方法依赖的package包/类
/**
 *  Calculate the width needed to display the maximum line number
 */
private void setPreferredWidth()
{
	Element root = component.getDocument().getDefaultRootElement();
	int lines = root.getElementCount();
	int digits = Math.max(String.valueOf(lines).length(), minimumDisplayDigits);

	//  Update sizes when number of digits in the line number changes

	if (lastDigits != digits)
	{
		lastDigits = digits;
		FontMetrics fontMetrics = getFontMetrics( getFont() );
		int width = fontMetrics.charWidth( '0' ) * digits;
		Insets insets = getInsets();
		int preferredWidth = insets.left + insets.right + width;

		Dimension d = getPreferredSize();
		d.setSize(preferredWidth, HEIGHT);
		setPreferredSize( d );
		setSize( d );
	}
}
 
开发者ID:BlidiWajdi,项目名称:Mujeed-Arabic-Prolog,代码行数:26,代码来源:TextLineNumber.java

示例2: getFillLevel

import java.awt.FontMetrics; //导入方法依赖的package包/类
private float getFillLevel(char c, FontMetrics f) {
	
	BufferedImage img = new BufferedImage(f.charWidth(c), f.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
	Graphics2D g = img.createGraphics();

	g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, antialiasing ? RenderingHints.VALUE_TEXT_ANTIALIAS_ON : RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
	g.setFont(font);
	g.setColor(Color.black);
	g.drawString(c+"", 0, img.getHeight()-f.getDescent());
	
	int[] rgb = img.getRGB(0, 0, img.getWidth(), img.getHeight(), null, 0, img.getWidth());
	int totalOpacity = 0;
	
	for(int color : rgb)
		totalOpacity += ImageTools.getAlpha(color);
	
	return totalOpacity / (float)(rgb.length*255);
}
 
开发者ID:CalebKussmaul,项目名称:GIFKR,代码行数:19,代码来源:ASCIIFilter.java

示例3: KeywordsPanel

import java.awt.FontMetrics; //导入方法依赖的package包/类
/**
 * Creates new form KeywordsPanel. 
 *
 * @param view view with the given filter
 * @param filter filter to be edited. Can be null and in that case
 *               all fields are disabled.
 */
public KeywordsPanel( KeywordsFilter filter ) {
    this.filter = filter;

    initComponents();
    initA11y();
    
    if( "Metal".equals( UIManager.getLookAndFeel().getID() ) ) //NOI18N
        setOpaque( true );
    else
        setOpaque( false );

    // it's not generated by form editor
    JPanel topAlign = new JPanel();
    topAlign.setLayout(new BorderLayout());
    topAlign.add(conditionsPanel, BorderLayout.NORTH);
    conditionsScrollPane.setViewportView(topAlign);
    // compute 80x10 chars space in scroll pane
    FontMetrics fm = getFontMetrics(getFont());
    int width = fm.charWidth('n') * 80;  // NOI18N
    int height = fm.getHeight() * 10;
    conditionsScrollPane.setPreferredSize(new java.awt.Dimension(width, height));

    Color background = (Color)UIManager.get("Table.background"); //NOI18N
    conditionsPanel.setBackground(background);
    topAlign.setBackground(background);

    moreButton.addActionListener(this);
    fewerButton.addActionListener(this);
    matchAllRadio.addActionListener(this);
    matchAnyRadio.addActionListener(this);

    showFilter(filter);
    updateSensitivity();
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:42,代码来源:KeywordsPanel.java

示例4: getFontImage

import java.awt.FontMetrics; //导入方法依赖的package包/类
private BufferedImage getFontImage(final char ch, final boolean antiAlias)
{
	final BufferedImage tempfontImage =
		new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
	final Graphics2D g = (Graphics2D)tempfontImage.getGraphics();
	if(antiAlias)
		g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
			RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
	else
		g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
			RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
	g.setFont(font);
	final FontMetrics fontMetrics = g.getFontMetrics();
	int charwidth = fontMetrics.charWidth(ch) + 8;
	
	if(charwidth <= 0)
		charwidth = 7;
	int charheight = fontMetrics.getHeight() + 3;
	if(charheight <= 0)
		charheight = font.getSize();
	final BufferedImage fontImage = new BufferedImage(charwidth, charheight,
		BufferedImage.TYPE_INT_ARGB);
	final Graphics2D gt = (Graphics2D)fontImage.getGraphics();
	if(antiAlias)
		gt.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
			RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
	else
		gt.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
			RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
	gt.setFont(font);
	gt.setColor(Color.WHITE);
	final int charx = 3;
	final int chary = 1;
	gt.drawString(String.valueOf(ch), charx,
		chary + fontMetrics.getAscent());
	
	return fontImage;
	
}
 
开发者ID:sudofox,项目名称:Backmemed,代码行数:40,代码来源:XFont.java

示例5: computeWidth

import java.awt.FontMetrics; //导入方法依赖的package包/类
/** Computes width of string up to maxCharCount, with font of given JComponent
 * and with maximum percentage of owning Window that can be taken */
private static int computeWidth (JComponent comp, int maxCharCount, int percent) {
    FontMetrics fm = comp.getFontMetrics(comp.getFont());
    int charW = fm.charWidth('X');
    int result = charW * maxCharCount;
    // limit width to 50% of containing window
    Window w = SwingUtilities.windowForComponent(comp);
    if (w != null) {
        result = Math.min(result, w.getWidth() * percent / 100);
    }
    return result;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:14,代码来源:QuickSearchPopup.java

示例6: updateCellWidths

import java.awt.FontMetrics; //导入方法依赖的package包/类
/**
 * Changes the width of the cells in the JList so you can see every digit
 * of each.
 */
void updateCellWidths() {

	int oldCellWidth = cellWidth;
	cellWidth = getRhsBorderWidth();

	// Adjust the amount of space the line numbers take up, if necessary.
	if (textArea!=null) {
		Font font = getFont();
		if (font!=null) {
			FontMetrics fontMetrics = getFontMetrics(font);
			int count = 0;
			int lineCount = textArea.getLineCount() +
					getLineNumberingStartIndex() - 1;
			do {
				lineCount = lineCount/10;
				count++;
			} while (lineCount >= 10);
			cellWidth += fontMetrics.charWidth('9')*(count+1) + 3;
		}
	}

	if (cellWidth!=oldCellWidth) { // Always true
		revalidate();
	}

}
 
开发者ID:Thecarisma,项目名称:powertext,代码行数:31,代码来源:LineNumberList.java

示例7: getOffsetBeforeX

import java.awt.FontMetrics; //导入方法依赖的package包/类
@Override
public int getOffsetBeforeX(RSyntaxTextArea textArea, TabExpander e,
						float startX, float endBeforeX) {

	FontMetrics fm = textArea.getFontMetricsForTokenType(getType());
	int i = textOffset;
	int stop = i + textCount;
	float x = startX;

	while (i<stop) {
		if (text[i]=='\t') {
			x = e.nextTabStop(x, 0);
		}
		else {
			x += fm.charWidth(text[i]);
		}
		if (x>endBeforeX) {
			// If not even the first character fits into the space, go
			// ahead and say the first char does fit so we don't go into
			// an infinite loop.
			int intoToken = Math.max(i-textOffset, 1);
			return getOffset() + intoToken;
		}
		i++;
	}

	// If we got here, the whole token fit in (endBeforeX-startX) pixels.
	return getOffset() + textCount - 1;

}
 
开发者ID:Thecarisma,项目名称:powertext,代码行数:31,代码来源:TokenImpl.java

示例8: getMinimumSize

import java.awt.FontMetrics; //导入方法依赖的package包/类
public Dimension getMinimumSize(final int rows, final int columns) {
    final Insets insets;
    synchronized (getDelegateLock()) {
        insets = getTextComponent().getInsets();
    }
    final int borderHeight = insets.top + insets.bottom;
    final int borderWidth = insets.left + insets.right;
    final FontMetrics fm = getFontMetrics(getFont());
    return new Dimension(fm.charWidth(WIDE_CHAR) * columns + borderWidth,
                         fm.getHeight() * rows + borderHeight);
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:12,代码来源:LWTextComponentPeer.java

示例9: getFontImage

import java.awt.FontMetrics; //导入方法依赖的package包/类
private BufferedImage getFontImage(final char ch, final boolean antiAlias) {
	final BufferedImage tempfontImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
	final Graphics2D g = (Graphics2D) tempfontImage.getGraphics();
	if (antiAlias)
		g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
	else
		g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
	g.setFont(font);
	final FontMetrics fontMetrics = g.getFontMetrics();
	int charwidth = fontMetrics.charWidth(ch) + 8;

	if (charwidth <= 0)
		charwidth = 7;
	int charheight = fontMetrics.getHeight() + 3;
	if (charheight <= 0)
		charheight = font.getSize();
	final BufferedImage fontImage = new BufferedImage(charwidth, charheight, BufferedImage.TYPE_INT_ARGB);
	final Graphics2D gt = (Graphics2D) fontImage.getGraphics();
	if (antiAlias)
		gt.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
	else
		gt.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
	gt.setFont(font);
	gt.setColor(Color.WHITE);
	final int charx = 3;
	final int chary = 1;
	gt.drawString(String.valueOf(ch), charx, chary + fontMetrics.getAscent());

	return fontImage;

}
 
开发者ID:Moudoux,项目名称:EMC,代码行数:32,代码来源:IFont.java

示例10: setFontHeightWidth

import java.awt.FontMetrics; //导入方法依赖的package包/类
private void setFontHeightWidth(Font font) {
    FontMetrics metrics=getFontMetrics(font);
    fontHeight=metrics.getHeight();
    charWidth=metrics.charWidth('m');
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:6,代码来源:QuietEditorPane.java

示例11: render

import java.awt.FontMetrics; //导入方法依赖的package包/类
@Override
public void render(BufferedImage image, String word) {
    final int width = image.getWidth();
    final int height = image.getHeight();
    Graphics2D graphics2D = image.createGraphics();

    RenderingHints hints = new RenderingHints(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    hints.add(new RenderingHints(RenderingHints.KEY_RENDERING,
            RenderingHints.VALUE_RENDER_QUALITY));
    graphics2D.setRenderingHints(hints);

    char[] wordChars = word.toCharArray();
    int wordLen = wordChars.length;

    Font[] chosenFonts = new Font[wordLen];
    int[] charWidths = new int[wordLen];
    int widthNeeded = 0;

    int maxFontSize = 0;

    for (int i = 0; i < wordLen; i++) {
        Font font = RandomUtil.rnd(fonts);

        if (font.getSize() > maxFontSize) {
            maxFontSize = font.getSize();
        }

        FontMetrics fontMetrics = graphics2D.getFontMetrics(font);
        int charWidth = fontMetrics.charWidth(wordChars[i]);
        widthNeeded = widthNeeded + charWidth;
        chosenFonts[i] = font;
        charWidths[i] = charWidth;
    }
    widthNeeded += charSpace * (wordLen - 1);

    int startPosX = (width - widthNeeded) / 2;
    int startPosY = (height - maxFontSize) / 5 + maxFontSize;

    for (int i = 0; i < wordLen; i++) {
        graphics2D.setFont(chosenFonts[i]);
        graphics2D.setColor(RandomUtil.rnd(colors));
        graphics2D.drawString(String.valueOf(wordChars[i]), startPosX, startPosY);
        startPosX = startPosX + charWidths[i] + charSpace;
    }
}
 
开发者ID:febit,项目名称:febit,代码行数:48,代码来源:DefaultWordRender.java

示例12: validateWidth

import java.awt.FontMetrics; //导入方法依赖的package包/类
/**
 * Helper function used by the block and underline carets to ensure the
 * width of the painted caret is valid.  This is done for the following
 * reasons:
 *
 * <ul>
 *   <li>The <code>View</code> classes in the javax.swing.text package
 *       always return a width of "1" when <code>modelToView</code> is
 *       called.  We'll be needing the actual width.</li>
 *   <li>Even in smart views, such as <code>RSyntaxTextArea</code>'s
 *       <code>SyntaxView</code> and <code>WrappedSyntaxView</code> that
 *       return the width of the current character, if the caret is at the
 *       end of a line for example, the width returned from
 *       <code>modelToView</code> will be 0 (as the width of unprintable
 *       characters such as '\n' is calculated as 0).  In this case, we'll
 *       use a default width value.</li>
 * </ul>
 *
 * @param rect The rectangle returned by the current
 *        <code>View</code>'s <code>modelToView</code>
 *        method for the caret position.
 */
private void validateWidth(Rectangle rect) {

	// If the width value > 1, we assume the View is
	// a "smart" view that returned the proper width.
	// So only worry about this stuff if width <= 1.
	if (rect!=null && rect.width<=1) {

		// The width is either 1 (most likely, we're using a "dumb" view
		// like those in javax.swing.text) or 0 (most likely, we're using
		// a "smart" view like org.fife.ui.rsyntaxtextarea.SyntaxView,
		// we're at the end of a line, and the width of '\n' is being
		// computed as 0).

		try {

			// Try to get a width for the character at the caret
			// position.  We use the text area's font instead of g's
			// because g's may vary in an RSyntaxTextArea.
			RTextArea textArea = getTextArea();
			textArea.getDocument().getText(getDot(),1, seg);
			Font font = textArea.getFont();
			FontMetrics fm = textArea.getFontMetrics(font);
			rect.width = fm.charWidth(seg.array[seg.offset]);

			// This width being returned 0 likely means that it is an
			// unprintable character (which is almost 100% to be a
			// newline char, i.e., we're at the end of a line).  So,
			// just use the width of a space.
			if (rect.width==0) {
				rect.width = fm.charWidth(' ');
			}

		} catch (BadLocationException ble) {
			// This shouldn't ever happen.
			ble.printStackTrace();
			rect.width = 8;
		}

	} // End of if (rect!=null && rect.width<=1).

}
 
开发者ID:Thecarisma,项目名称:powertext,代码行数:64,代码来源:ConfigurableCaret.java

示例13: listOffsetToView

import java.awt.FontMetrics; //导入方法依赖的package包/类
@Override
public Rectangle listOffsetToView(RSyntaxTextArea textArea, TabExpander e,
		int pos, int x0, Rectangle rect) {

	int stableX = x0; // Cached ending x-coord. of last tab or token.
	TokenImpl token = this;
	FontMetrics fm = null;
	Segment s = new Segment();

	while (token != null && token.isPaintable()) {

		fm = textArea.getFontMetricsForTokenType(token.getType());
		if (fm == null) {
			return rect; // Don't return null as things'll error.
		}
		char[] text = token.text;
		int start = token.textOffset;
		int end = start + token.textCount;

		// If this token contains the position for which to get the
		// bounding box...
		if (token.containsPosition(pos)) {

			s.array = token.text;
			s.offset = token.textOffset;
			s.count = pos - token.getOffset();

			// Must use this (actually fm.charWidth()), and not
			// fm.charsWidth() for returned value to match up with where
			// text is actually painted on OS X!
			int w = Utilities.getTabbedTextWidth(s, fm, stableX, e,
					token.getOffset());
			rect.x = stableX + w;
			end = token.documentToToken(pos);

			if (text[end] == '\t') {
				rect.width = fm.charWidth(' ');
			}
			else {
				rect.width = fm.charWidth(text[end]);
			}

			return rect;

		}

		// If this token does not contain the position for which to get
		// the bounding box...
		else {
			s.array = token.text;
			s.offset = token.textOffset;
			s.count = token.textCount;
			stableX += Utilities.getTabbedTextWidth(s, fm, stableX, e,
					token.getOffset());
		}

		token = (TokenImpl)token.getNextToken();

	}

	// If we didn't find anything, we're at the end of the line. Return
	// a width of 1 (so selection highlights don't extend way past line's
	// text). A ConfigurableCaret will know to paint itself with a larger
	// width.
	rect.x = stableX;
	rect.width = 1;
	return rect;

}
 
开发者ID:Thecarisma,项目名称:powertext,代码行数:70,代码来源:TokenImpl.java

示例14: main

import java.awt.FontMetrics; //导入方法依赖的package包/类
public static void main(String[] args) {

		List<String> monospaceFontFamilyNames = new ArrayList<>();
		GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment
				.getLocalGraphicsEnvironment();
		String[] fontFamilyNames = graphicsEnvironment
				.getAvailableFontFamilyNames();

		BufferedImage bufferedImage = new BufferedImage(1, 1,
				BufferedImage.TYPE_INT_ARGB);
		Graphics graphics = bufferedImage.createGraphics();

		for (String fontFamilyName : fontFamilyNames) {
			boolean isMonospaced = true;
			//
			int fontStyle = Font.PLAIN;
			int fontSize = 12;
			Font font = new Font(fontFamilyName, fontStyle, fontSize);
			@SuppressWarnings("serial")
			List<Integer> codePoints = new ArrayList<Integer>() {
				{
					add(108); /* l */
					add(109); /* m */
					add(119); /* w */
					add(49); /* 1 */
					add(52); /* 4 */
				}
			};
			FontMetrics fontMetrics = graphics.getFontMetrics(font);

			int firstCharacterWidth = 0;
			boolean hasFirstCharacterWidth = false;
			for (int codePoint : codePoints) {
				if (Character.isValidCodePoint(codePoint)
						&& (Character.isLetter(codePoint)
								|| Character.isDigit(codePoint))) {
					char character = (char) codePoint;
					int characterWidth = fontMetrics.charWidth(character);
					if (hasFirstCharacterWidth) {
						if (characterWidth != firstCharacterWidth) {
							isMonospaced = false;
							break;
						}
					} else {
						firstCharacterWidth = characterWidth;
						hasFirstCharacterWidth = true;
					}
				}
			}

			if (isMonospaced) {
				monospaceFontFamilyNames.add(fontFamilyName);
			}
		}

		graphics.dispose();
		for (String fontFamily : monospaceFontFamilyNames) {
			System.out.println(fontFamily);
		}
	}
 
开发者ID:sergueik,项目名称:SWET,代码行数:61,代码来源:ListJavaFonts.java

示例15: main

import java.awt.FontMetrics; //导入方法依赖的package包/类
public static void main(String args[]) throws Exception {
     System.out.println("Default Charset = "
         + Charset.defaultCharset().name());
     System.out.println("Locale = " + Locale.getDefault());
     String os = System.getProperty("os.name");
     String encoding = System.getProperty("file.encoding");
     /* Want to test the JA locale uses alternate font for DialogInput. */
     boolean jaTest = encoding.equalsIgnoreCase("windows-31j");
     if (!os.startsWith("Win") && jaTest) {
         System.out.println("Skipping Windows only test");
         return;
     }

     String className = "sun.java2d.SunGraphicsEnvironment";
     String methodName = "useAlternateFontforJALocales";
     Class sge = Class.forName(className);
     Method uafMethod = sge.getMethod(methodName, (Class[])null);
     Object ret = uafMethod.invoke(null);
     GraphicsEnvironment ge =
         GraphicsEnvironment.getLocalGraphicsEnvironment();
     ge.preferLocaleFonts();
     ge.preferProportionalFonts();
     if (jaTest) {
         Font msMincho = new Font("MS Mincho", Font.PLAIN, 12);
         if (!msMincho.getFamily(Locale.ENGLISH).equals("MS Mincho")) {
              System.out.println("MS Mincho not installed. Skipping test");
              return;
         }
         Font dialogInput = new Font("DialogInput", Font.PLAIN, 12);
         Font courierNew = new Font("Courier New", Font.PLAIN, 12);
         Font msGothic = new Font("MS Gothic", Font.PLAIN, 12);
         BufferedImage bi = new BufferedImage(1,1,1);
         Graphics2D g2d = bi.createGraphics();
         FontMetrics cnMetrics = g2d.getFontMetrics(courierNew);
         FontMetrics diMetrics = g2d.getFontMetrics(dialogInput);
         FontMetrics mmMetrics = g2d.getFontMetrics(msMincho);
         FontMetrics mgMetrics = g2d.getFontMetrics(msGothic);
         // This tests to make sure we at least have applied
         //  "preferLocaleFonts for Japanese
         if (cnMetrics.charWidth('A') == diMetrics.charWidth('A')) {
              throw new RuntimeException
                    ("Courier New should not be used for DialogInput");
         }
         // This is supposed to make sure we are using MS Mincho instead
         //  of MS Gothic. However they are metrics identical so its
         // not definite proof.
         if (diMetrics.charWidth('A') != mmMetrics.charWidth('A')) {
              throw new RuntimeException
                  ("MS Mincho should be used for DialogInput");
         }
    }
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:53,代码来源:TestSGEuseAlternateFontforJALocales.java


注:本文中的java.awt.FontMetrics.charWidth方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。