是否可以本地化JOptionPane消息标题,即“消息”?我使用
本地化了确定和取消按钮文本UIManger.put("Ok","localtext");
由于
答案 0 :(得分:2)
当您调用show * Dialog方法时,可以为JOptionPane提供的所有对话框设置标题。它通常是第三个方法参数。例如:
JOptionPane.showMessageDialog(Component parentComponent, Object message, String title, int messageType)
通常,从资源包中读取本地化字符串(例如对话框标题),并将其作为参数传递给show * Dialog调用。
答案 1 :(得分:1)
使用它,您可以将特定键下的本地化值存储在.properties
文件中,然后通过以下方式获取它们:ResourceBundle.getBundle("messages", locale).get("messageKey")
。
.properties
个文件由basename_locale.properties
组成。例如,messages_en.properties
关于JOptionPane
,see here如何自定义文本。至于标题 - 您可以将其作为参数传递。
答案 2 :(得分:1)
你不会期待这个答案......
在JDK安装目录下,您将能够找到名为src.zip的文件。只需解压缩并导航到javax / swing / JOptionPane.java即可。它包含以下可能回答您问题的方法:
public static String showInputDialog(Component parentComponent,
Object message) throws HeadlessException {
return showInputDialog(parentComponent, message, UIManager.getString(
"OptionPane.inputDialogTitle", parentComponent), QUESTION_MESSAGE);
}
正如您所看到的,OptionPane.inputDialogTitle
可能正是您所寻找的......虽然有更简单的方法来设置标题。但是,如果你想以同样的方式做所有事情,你也可以使用UIManager
我写这个,因为你肯定需要这个方法用于其他对话,即JFileChooser。通过这样做,您可能会发现桌面文件夹名称在Windows Vista +上的Java 6中是硬编码的(它被解析为磁盘上的实际文件夹名称,它总是“桌面”)。
答案 3 :(得分:0)
本地化JoptionPane标题,消息和选项(YES,NO,OK,CANCEL):
资源包允许我们设置不同的语言。 Bellow示例说明了如何使用中文消息和选项创建消息对话框...
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import javax.swing.JOptionPane;
public class LocalizeMessagePane {
private static ResourceBundle resourceBundle = null;
//Language Property location
private static final String PROPERTY_LOCATION = "resource";
public static void main(String[] args) {
resourceBundle = getLanguageBundle(); //try to get Chinese bundle
// Get Yes/No option text from bundle
Object[] options = { resourceBundle.getObject("Yes").toString(),
resourceBundle.getObject("No").toString() };
int option = JOptionPane.showOptionDialog(null, resourceBundle
.getObject("sureDo").toString(),
resourceBundle.getObject("title").toString(),
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[1]);
if(option==JOptionPane.YES_OPTION){
// do stuff
}
}
public static ResourceBundle getLanguageBundle() {
try {
/* The Property file should be placed under 'resource' directory. */
resourceBundle = new PropertyResourceBundle(new InputStreamReader(
new FileInputStream(PROPERTY_LOCATION
+ "/Bundle_zh_CN.properties"),
Charset.forName("UTF-8")));
} catch (Exception e) {
// do stuff
}
return resourceBundle;
}