我有一个带有自定义TableCellRenderer的JTable。在外观更新后刷新JTable
public class DateCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 58L;
public DateCellRenderer() {
super();
setHorizontalAlignment(CENTER);
setOpaque(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (value instanceof Date) {
String date = new SimpleDateFormat("dd-MM-yyyy").format((Date) value);
setText(date);
}
return this;
}
}
另外在我的应用程序中,我有一个下拉菜单,我可以改变外观和感觉。此下拉菜单位于父框架中,表格位于对话框中。当对话框打开时,父框架不可访问。所以要改变外观,我必须先关闭对话框。
现在在特定的皮肤中,如果表格由一些数据填充,并且我从父框架更改外观并再次打开对话框,那么添加了TableCellRenderer的列保持旧外观和感觉。它不会更新,而其他列会以新的外观呈现自己。
我无法找到问题及其解决方案。任何帮助是可观的。
注:外观和感觉的应用程序的更新是由下面的代码片段提前做出
javax.swing.UIManager.setLookAndFeel(uiProperties.getThemeModel().getThemeClass());
ComponentFactory.getLibraryFrame().getRootPane().updateUI();
for (int i = 0; i < Frame.getWindows().length; i++) {
SwingUtilities.updateComponentTreeUI(Frame.getWindows()[i]);
}
for (int i = 0; i < Frame.getFrames().length; i++) {
SwingUtilities.updateComponentTreeUI(Frame.getFrames()[i]);
}
感谢。
在高保真主题第一选自:
然后我改变主题,以快速,和第二列 “发行日期” 未更新它的UI:
JTable的是:
public class MovieSearchResultTable extends BaseTable {
private static final long serialVersionUID = 45L;
public MovieSearchResultTable(TableModel tableModel) {
super(tableModel);
LibraryLogger.initMessage(getClass().getSimpleName());
}
@Override
public void initialize() {
setFillsViewportHeight(true);
setAutoResizeMode(AUTO_RESIZE_OFF);
getColumnModel().getColumn(1).setCellRenderer(new DateCellRenderer());//if I comment out this line then no problem. but without CellRenderer how could I format a Date, if I use formatted String instead of Date, then the column will not sort!!
}
@Override
public boolean getScrollableTracksViewportWidth() {
return getPreferredSize().getWidth() < getParent().getWidth();
}
}
从外观和感觉 – mKorbel 2012-02-21 17:45:39
我使用jtatoo - http://www.jtattoo.net/外观和感觉。它的外观和感觉像HiFi,Fast,Acryl,Aero等。该下拉列表包含这些主题列表。 – 2012-02-21 17:54:25
现在是你的问题清楚,但没有代码生成一些问题.....或图片是你的问题相当un_answerable,你只是试图改变JTatoo○s主题飞,nothins其他? – mKorbel 2012-02-21 17:58:56