私はカスタム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]);
}
感謝を作っています。ハイファイのテーマで
最初の選択:
をその後、私は高速にテーマを変え、2番目の列は、その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
私はjtatoo - http://www.jtattoo.net/ルックアンドフィールを使用しています。それは、サブ外観を持っていて、HiFi、Fast、Acryl、Aeroなどのように感じます。そのドロップダウンはこれらのテーマのリストで構成されています。 –
あなたの質問は明らかですが、コードなしでいくつかの問題が発生しました.....または写真はあなたの質問です。かなりun_answerable、JTatoo○sのテーマを変更しようとしましたか? – mKorbel