在swing应用程序中使用多种语言

时间:2015-07-14 11:36:17

标签: java swing

我们可以在swing应用程序中使用多种字体样式,并可以为不同的swing文本字段指定不同的字体样式。但有没有办法在java swing应用程序中配置一个JTextField以支持多语言。例如,输入是地址。

  

12B“其他语言的街道名称”

JTextField field = new JTextField("example",30);
Font font = new Font("Courier", Font.BOLD,12);
field.setFont(font);

我们怎样才能做到这一点?是否有任何字体支持双字体样式(英语+法语)。

第一次回复后更新

还需要将键入的文本发送到数据库并以相同的格式检索回来。所以我认为不可能动态切换字体。

更新2

如果我们考虑微软的话,我们可以在一个页面中使用多种字体。所以应该有一个算法来保存带有相应字体的打字字母。如何在没有为不同的语言输入创建两个文本字段的情况下实现这种行为。

enter image description here

2 个答案:

答案 0 :(得分:4)

如果将组件更改为JTextPane,则可以使用HTML标记混合字体。下面的代码将创建一个字段,其中包含文本“Hello world”,字体Times New Roman为“Hello”,Courier为“World!”:

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());
    }
}

答案 1 :(得分:0)

您必须根据需要设置文本字段的区域设置。您可以查看此link中提供的答案。