gpt4 book ai didi

java - 外观更新后刷新 JTable

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:25 25 4
gpt4 key购买 nike

我有一个带有自定义 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 主题中: enter image description here

然后我将主题更改为快速,第二列“已发布”未更新其用户界面: enter image description here

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();
}
}

最佳答案

我认为 L&F 不好,JTable 看起来像……好吧,但其他 Compound JComponents 不是……,不确定我没有浪费我的时间,我离开去测试一下,也许有什么东西在他们的论坛或文档或 BugParades 上对此进行了描述,但您的问题中没有任何内容

方法很简单,随时可以查看

1) 转到 Insubstantial

2) 下载代码源,

3) 将所有类导入 IDE(2-15 分钟取决于 PC 硬件)

4) 搜索文件夹test,有Check.java,

5) 运行它并尝试 JMenu Look and Feel 中的所有内容,在此之前需要为每个 Custom Java Swing Look and Feels 下载 API

enter image description here

关于java - 外观更新后刷新 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9382332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com