【发布时间】:2012-02-22 06:07:16
【问题描述】:
我有一个带有自定义 TableCellRenderer 的 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 的列将保持旧外观。当其他列以新的外观呈现自己时,它不会更新。
我无法找到问题及其解决方案。任何帮助都是可观的。
注意:应用程序的外观更新由以下sn-p进行
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]);
}
提前致谢。
在首先选择的 HiFi 主题中:
然后我把主题改成Fast,第二列“Released”没有更新它的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();
}
}
【问题讨论】:
-
外观和感觉
-
我正在使用 jtatoo - jtattoo.net 外观。它的外观和感觉像 HiFi、Fast、Acryl、Aero 等。该下拉列表包含这些主题列表。
-
现在你的问题很清楚,但是没有代码产生一些问题.....或者图片是你的问题很难回答,你只是尝试改变JTatoo○s主题,没有别的吗? ??