【问题标题】:InsertRow and automatic render in JTableJTable 中的 InsertRow 和自动渲染
【发布时间】:2013-06-14 18:29:51
【问题描述】:

我有一个 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();
    }

问题是当我调用它时,我必须调用更多的东西来渲染表格??

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 它们的格式是否正确?
  • 您是否将渲染器添加到表格中?是否覆盖了 TAbleModel 的 getColumnClass() 方法。
  • @camickr 没有被覆盖,应该是? ,我没有这样做:S 他们只是给了我这个致命的东西:P,我认为可能是那个

标签: java swing jtable tablecellrenderer


【解决方案1】:

例如重写 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") ));

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多