问题描述
所以,问题肯定出在字体上.问题是如何使文本字段完全显示文本.示例:
So, the problem is definitely with the font. Question is how to make the text field display text fully. Example:
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
class Example extends JFrame{
public Example(){
setLayout(new BorderLayout());
Font myFont = null;
try {
URL link = new URL("http://rghost.ru/download/50564305/e6efddd74f598b86f7ac704cab72e430a490bc7f/digital-7.ttf");
ReadableByteChannel rbc = Channels.newChannel(link.openStream());
File font_file = new File("font.ttf");
if(!font_file.exists())
font_file.createNewFile();
FileOutputStream fos = new FileOutputStream(font_file);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
myFont = Font.createFont(Font.TRUETYPE_FONT, font_file);
} catch (FontFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
JTextField myField = new JTextField("sample text");
myField.setFont(myFont.deriveFont(32.0f));
add(myField, BorderLayout.NORTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 400);
setVisible(true);
}
public static void main(String[] args){
new Example();
}
}
字体为Digital 7: dafont.com
问题解决了解决方案是将此处(或其他此类位置)字体转换为PFM并使用它像这样:
The font is Digital 7: dafont.com
PROBLEM SOLVEDThe solution is to convert the font here (or other such place) to PFM and use it like that:
Font myFont = Font.createFont(Font.TYPE1_FONT, new File("res/my_font.pfm"));
推荐答案
我怀疑问题出在Font
而不是Java.
I suspect the problem is with the Font
rather than Java.
我找到了位于 http://onlinefontconverter.com/font?id=p1 声称(有时)修复了无效的字体,但是找不到能够简单报告有效性的字体.尝试先运行它.
I found a page at http://onlinefontconverter.com/font?id=p1 that claims to (sometimes) fix invalid fonts, but cannot locate one that will simply report the validity. Try running it through that first.
这篇关于使用自定义TrueType字体时,JTextField会裁剪文本.如何使其正常显示文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!