使用Locale的JTable Printing对话框

时间:2013-07-24 17:08:56

标签: java swing printing dialog jtable

我正在使用Java Swing。 我尝试使用Jtable的打印方法...

public void actionPerformed(java.awt.event.ActionEvent ignore) {
    MessageFormat header = new MessageFormat("Page {0,number,integer}");
    try {
        table.print(JTable.PrintMode.FIT_WIDTH, header, null);
    } catch (java.awt.print.PrinterException e) {
        System.err.format("Cannot print %s%n", e.getMessage());
    }
}

显示打印对话框。它的工作很好..

The printing dialog

但我想用Locale类将文本对话框语言更改为西班牙语,我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

@Diego

我在这里复制了您的解决方案,以便更容易阅读。

这是旧论坛条目的启发:https://forums.oracle.com/thread/1287832

----开始----

在Jtable.print()方法之前添加反射来更改ResourceBlunde ...

try { 
    Class cl = Class.forName("sun.print.ServiceDialog"); 
    if (cl != null) { 
        Field fld = cl.getDeclaredField("messageRB"); 
        if (fld != null) { 
            fld.setAccessible(true); 
            fld.set(cl, ResourceBundle.getBundle("sun.print.resources.serviceui_es")); 
        } 
    } 
} catch (Exception ex11) { 
    ex11.printStackTrace(); 
}

----结束----

我可能希望有一天能够搜索并找到它。