如何向JavaSwing组件添加两种字体,并在用户切换键盘输入语言时使它们自动切换?

如何向JavaSwing组件添加两种字体,并在用户切换键盘输入语言时使它们自动切换?,java,swing,fonts,localization,Java,Swing,Fonts,Localization,我正在开发一个应用程序,用户应该能够输入一些包含英语和波斯语的文本(与阿拉伯语相同:几乎相同的字符,从右到左书写) 目前我使用的字体像Courier New,它支持两种语言,但看起来很难看。我想使用一些外观更好的字体,但这些字体只支持其中一种语言,并为另一种语言显示无意义字符。所以我需要基于文本语言来使用它们 那么,一般来说,我如何让Java组件(特别是swing.JTextField、swing.JListBox和swing.JTextComponent)接受两种字体并适当切换以获得一个好看的

我正在开发一个应用程序,用户应该能够输入一些包含英语和波斯语的文本(与阿拉伯语相同:几乎相同的字符,从右到左书写)

目前我使用的字体像Courier New,它支持两种语言,但看起来很难看。我想使用一些外观更好的字体,但这些字体只支持其中一种语言,并为另一种语言显示无意义字符。所以我需要基于文本语言来使用它们

那么,一般来说,我如何让Java组件(特别是
swing.JTextField
swing.JListBox
swing.JTextComponent
)接受两种字体并适当切换以获得一个好看的GUI

编辑:以下是我需要的示例。假设用户应该输入类似于(FPGAاتاااز的内容,并且所有内容都在一个
swing.JTextField
中。它的意思是(使用FPGA),FPGA是缩写,因此没有波斯语翻译。我需要设置一种外观更好的字体,所有支持Unicode的字体在波斯语部分都很难看


现在,如果我将字体设置为类似于
Times New Roman
,它只支持拉丁语,那么波斯语字符将显示为空方块。另外,如果我将字体设置为类似于
bnazanin
,它只支持波斯语,那么拉丁字符将显示为空方块。如何在一个Java组件中同时使用两种字体

“尤其是
swing.JTextField
swing.JListBox
swing.JText
”API中没有
JText
类。DYM
JTextComponent
JTextPane
或..?我不太确定您在这里问什么,但请参阅..谢谢编辑,您是正确的@andrewhompson等方法。我只是想输入JTextComponent。关于Font.canDisplayUpTo,它只告诉我我已经知道的,有些字符无法正确显示。“我只是想键入JTextComponent。”你可以随时。。当你在那里的时候,你也可以澄清你不确定的是什么。@AndrewThompson。我编辑了我的问题,并添加了一个例子来说明我的意思。谢谢你的评论。
InputContext context = InputContext.getInstance();
if(context.getLocale().toString().equals("en_GB")){
    .setFont(*font for english keyboard*);
}
else if(context.getLocale().toString().equals("fa_IR")){
    .setFont(*font for persian keyboard*);
}