Tag: 字体

Swing不显示unicode字符

我有一些非ascii字符,我试图在Swing JComboBox中显示。 字符显示不正确,我得到很多奇怪的字符,非ascii字符应该是: import javax.swing.*; public class Test { public static void main(String[] args) { String[] choices = new String[]{“Good’s”,”Bad’s”,”தமிழ்”}; for (String s : choices) System.out.println(s); JComboBox choiceBox = new JComboBox(choices); JFrame frame = new JFrame(“Test”); frame.setSize(400, 400); frame.add(choiceBox); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } (请注意Bad’s中略有不同的撇号,这就是整个事情的起源。) System.out.println调用在终端中显示正好的字符。 关于这一点有很多关于SO的问题,他们建议列出来自GraphicsEnvironment的字体,只挑选声称显示我的字符的字体。 不幸的是,这个技巧对我不起作用。 Font font = new Font(“Ariel”, Font.PLAIN, 12); for […]

如何正确显示孟加拉语文本

我有一个JTextArea ,我需要显示孟加拉语文字,如: বাংলাদেশ 但我能看到的只是长方形盒子。 如何正确显示孟加拉语字符?

Java中字符串长度(以像素为单位

有没有办法计算字符串的长度(以像素为单位)给定某个java.awt.Font对象,它不使用任何GUI组件?

itext Marathi(印度语)语言显示问题

我正在评估iText作为java swing应用程序的PDFGenerator。 输出应该是“马拉地语”,这是一个类似于印地语的当地印度语,但不一样。 出于评估目的,这是我试图打印的文本: मराठीग्रीटींग्स,मराठीशुभेच्छापत्रे 这是源代码: package pdftest; import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.FontFactory; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; public class CPDFTest { private static String FILE = “c:/will/FirstPdf.pdf”; public static void main(String[] args) { try { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(FILE)); document.open(); addMetaData(document); addTitlePage(document); document.close(); } […]

为什么我必须调用GraphicsEnvorinment.registerFont(),即使我的文件是从文件创建的?

我正在开发一个使用JFreeChart渲染图表的Web应用程序。 但是,当服务器没有安装任何中文字体时,即使我设置了字体,JFreeChart也不会显示中文字符。 然后我写了一个小的测试代码,发现在绘制图表之前添加这行代码可以解决问题。 GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font); 所以我的问题是 – 即使我从File创建我的字体,为什么我必须将字体注册到JVM? 意味着JFreeChart的剂量不使用我直接设置的字体? 当我将程序部署到服务器时,即使我添加了这行代码,它也不会显示中文字符。 如何使它始终使用我设置的字体,以便在所有环境中正确显示字符? 我知道我可以在$JAVA_HOME/jre/lib创建一个fallback目录并将我的字体放入其中。 但这并不能解释为什么JFreeChart无法显示我设置的字体。 UPDATE 我很确定字体加载正确,因此当我将程序部署到Tomcat时,剂量registerFont()返回true。 更新2 根据JAVA 2D FAQ ,现在我意识到我必须调用registerFont()才能将我自己的字体“安装”到JVM中,我的字体将通过Font构造函数提供。 从Java SE 6开始,有一个方法:GraphicsEnvironment.registerFont(),它使您能够为Font构造函数提供“已创建”字体,并通过Font枚举API列出。 Font.createFont()和这个方法相结合,提供了一种方法,将Font“安装”到正在运行的JRE中,因此它就像O / S安装的字体一样可用。 但是,此字体不会在JRE调用中持续存在。 但是,由于我已经创建/派生自createFont() Font实例,为什么选择我的程序仍需要创建其他Font ? 以下是我使用的代码,它只是输出PNG格式的图表。 如果你想运行代码,你应该改变输出位置和字体以满足你的需要, 这里是我在代码中使用的中文字体的SourceForge链接 。 import java.awt.Font; import java.awt.GraphicsEnvironment; import java.io.File; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; public class Problem { […]

如何计算字符串的宽度(以像素为单位)?

如何计算Java中像素的宽度(以像素为单位)? 例如,我有一个字符串说“Hello World!”。 它的长度(以像素为单位)是多少,还要考虑它的字体系列和大小?

单击JButton Java时更改字体样式

如何在单击JButton时更改Font的STYLE ? 我试图让3个按钮各自改变PLAIN或BOLD或ITALIC样式 我已经阅读了font Class API但我没有像setStyle那样只有getStyle 我发现java中的字体类比它应该更复杂:S。

如何在整个Swing UI应用程序中更改Font

我做了一个摇摆应用程序。 现在我想更改整个Swing应用程序的Font,以便添加的任何组件都应该只跟随该Font。 有没有办法实现同样的目标?

如何为Java提供任意字体文件?

我正在使用第三方库,它通过GraphicsEnvironment:getAllFonts()调用访问字体。 这包括属于JRE和操作系统的字体注册表中的字体。 但是在连接到我们服务器的客户端计算机上,我可能无法将字体安装到这些位置中的任何一个位置。 那么我怎样才能让其他字体可用于JRE,以便这个调用能够接收它们? 有没有办法扩展其搜索路径? 我可以使用Font.createFont()调用从任意文件访问字体。 但是它仍然没有出现在GraphicsEnvironment.getAllFonts()中。 有没有一种方法可以将那个Font传递给它,将它添加到可用的字体列表中? 我正在读取有从系统属性访问字体的调用,但我仍然不理解,我认为只是将我设置的字体属性转换为可用列表中的字体名称。 asalamon已经提供了正确答案,但我坚持使用早期版本的Java,不支持它,至少到明年。 所以更多答案仍然非常受欢迎! 我可能会尝试使用reflection来破解我们正在使用的库并将字体直接插入其缓存中。

如何修改JTextPane中的字母间距?

我需要修改JTextPane中的字母间距(字体跟踪),我无法让它工作。 当我使用JTextArea时,我可以这样做: Font font = new Font(“Courier New”, Font.PLAIN, 10); HashMap attrs = new HashMap(); attrs.put(TextAttribute.TRACKING, -0.1); font = font.deriveFont(attrs); textArea.setFont(font); 但由于我需要更改行间距,我需要使用JTextPane,并执行: textPane.setFont(font) 正如我对JTextArea所做的那样不起作用。 我试过的另一件事是: MutableAttributeSet set = new SimpleAttributeSet(); StyleConstants.setLineSpacing(set, -0.2); StyleConstants.setFontFamily(set,”Courier New”); StyleConstants.setFontSize(set, 10); set.addAttribute(TextAttribute.TRACKING, -0.1); ta.setParagraphAttributes(set, true); 但跟踪属性不起作用。 我究竟做错了什么?