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

Bur*_*man 9 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);
Run Code Online (Sandbox Code Playgroud)

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

在第一次答复后更新

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

更新2

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

在此输入图像描述

Ian*_*edv 5

如果将组件更改为JTextPane. 下面的代码将创建一个包含文本“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>");
Run Code Online (Sandbox Code Playgroud)

这是一个可运行的示例:

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);
}
Run Code Online (Sandbox Code Playgroud)

这是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());
    }
}
Run Code Online (Sandbox Code Playgroud)