我们可以在swing应用程序中使用几种字体样式,并且可以为不同的swing文本字段分配不同的字体样式。但是,在java应用程序中是否有任何方法可以配置一个JTextField来支持多语言。例如,输入是地址。
12B“其他语言的街道名称”
JTextField field = new JTextField("example",30);
Font font = new Font("Courier", Font.BOLD,12);
field.setFont(font);
我们如何才能做到这一点?是否有任何字体支持双字体样式(英语+法语)。
第一个应答后的更新
还需要将输入的文本发送到数据库中,并以相同的格式检索回来。因此,我认为不可能在字体之间动态切换。
更新2
如果我们考虑Microsoft,我们可以在一个页面中使用多个字体。因此,应该有一个算法,以保存打印字母与各自的字体。如何在不为不同的语言输入生成两个文本字段的情况下,在swing中实现这种行为。
发布于 2015-07-14 14:07:27
如果将组件更改为JTextPane
,则可以通过使用HTML标记混合字体。下面的代码将创建一个包含文本"Hello“的字段,字体为"Hello”的字体为“New”,“world”的为“Courier”:
JTextPane field = new JTextPane();
field.setContentType("text/html");
field.setText("<html><font face=\"Times New Roman\">Hello</font> <font face=\"Courier\">world!</font></html>");
下面是一个可运行的示例:
public static void main(String[] args) throws InterruptedException {
MultiFontField text = new MultiFontField();
JFrame frame = new JFrame();
text.appendText("Hello ", "Times New Roman").appendText("world!", "Courier").finaliseText();
frame.add(text);
frame.setSize(200, 50);
frame.setVisible(true);
}
下面是MultiFontField
类:
public class MultiFontField extends JTextPane {
private StringBuilder content;
public MultiFontField() {
super();
this.content = new StringBuilder("<html>");
this.setContentType("text/html");
}
public MultiFontField appendText(String text, String font) {
content.append("<font face=\"").append(font).append("\">").append(text).append("</font>");
return this;
}
public void finaliseText() {
this.setText(content.append("</html>").toString());
}
}
发布于 2015-07-14 11:52:44
您必须根据需要设置文本字段的区域设置。您可以检查这个link中提供的答案。
https://stackoverflow.com/questions/31405487
复制相似问题