gpt4 book ai didi

java - JTable 中的 InsertRow 和自动渲染

转载 作者:行者123 更新时间:2023-12-01 18:47:33 27 4
gpt4 key购买 nike

我有一个 JTable 和一个自定义表模型,在某些地方有 Double.class 作为列类。我从数据库中读取数据,然后将结果插入到表中。我希望数字以 2 位小数呈现,所以我使用此类

    public class NumberCellRender extends DefaultTableCellRenderer {

DecimalFormat numberFormat = new DecimalFormat("#.00");

@Override
public Component getTableCellRendererComponent(JTable jTable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(jTable, value, isSelected, hasFocus, row, column);
if (c instanceof JLabel && value instanceof Number) {
JLabel label = (JLabel) c;
label.setHorizontalAlignment(JLabel.RIGHT);
Number num = (Number) value;
String text = numberFormat.format(num);
label.setText(text);

}
return c;

} }

问题是当我调用 addRow 时,Double.class 列没有格式化

  public void addRowData( IEntity entity ) {
getRowsData().add(entity);
fireTableDataChanged();
}

问题是当我调用它时我必须调用更多内容来渲染表格?

最佳答案

例如重写 getColumnClass() 方法:

        public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);

if (o != null)
{
return o.getClass();
}
}

return Object.class;
}

然后将渲染器添加到您执行的表中:

table.setDefaultRenderer(Double.class, new NumberCellRenderer());

您可能还想查看Table Format Renderers对于一些通用渲染器,您可以使用:

table.setDefaultRenderer(Double.class, new NumberRenderer( new DecimalFormat("#.00") ));

关于java - JTable 中的 InsertRow 和自动渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17115057/

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