2010-09-20 68 views
0

我有一个javax.swing.table.AbstractTableModel的子类,它定义了表列标题,如下所示:protected String[] columnNames = new String[] { "Column1", "Column2};。如何从资源包本地化columnNames?我想从.properties文件读取列标题,而不是在我的代码中对它们进行硬编码。有没有更好的方法来做到这一点?JTable列标题本地化

回答

0

最简单的方法是修改您的COLUMNNAMES分配:

protected String[] columnNames = getColumnNames(); 
//... 
private static String[] getColumnNames() { 
    return ResourceBundle.getBundle("AppResources").getString("headings").split(","); 
} 

凡AppResources(或AppResources_en,AppResources_fr_FR等)是扩展资源包和含有类键称为“标题”,它返回逗号分隔的标题列表。

+0

我修复了代码中怪异的东西,但我认为将多个字符串打包成单个字符串,然后在运行时将它们拆分是一个坏主意,因为当您最终将这些内容发送给您的翻译人员时,他们应该将逗号逗号为他们自己的语言,所以你的分裂代码将不再工作。你应该做的是将一个头名称放入每个字符串中。 – Trejkaz 2015-03-29 07:15:04

3

您重写getColumnName()以返回列名称的本地化值。

例如:

private ResourceBundle res = ResourceBundle.getBundle("MyResource"); 

@Override 
public String getColumnName(int column) { 
    return res.getString(columnNames[column]); 
}