У меня есть JTable с пользовательским 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, сохраняет старый внешний вид , Он не обновляется, а другие столбцы отображают себя в новом стиле.
Не удается найти решение проблемы. Любая помощь заметна.
Примечание: внешний вид и обновление приложения осуществляется следующим фрагментом
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 выбранной темы первой:
Затем изменить тему для быстрого и второй колонке "Дата выхода" не обновил свой интерфейс:
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();
}
}
, который от Look and Feel – mKorbel
Я использую jtatoo - http://www.jtattoo.net/ внешний вид. Он имеет внешний вид и выглядит как HiFi, Fast, Acryl, Aero и т. Д.Этот раскрывающийся список состоит из этого списка тем. –
прямо сейчас ваш вопрос понятен, но без кода сгенерирован какой-то вопрос ..... или картинки на ваш вопрос довольно un_answerable, вы только пробовали изменить JTatoo ○ s Темы на лету, ничего не иначе ??? – mKorbel