gpt4 book ai didi

java - 在 jtable 的 double 类型单元格中输入空白值

转载 作者:行者123 更新时间:2023-12-01 07:34:58 24 4
gpt4 key购买 nike

我有自定义表模型,也有针对 jtable 中有问题的双列的自定义渲染。我希望可以选择在双列中保留空白单元格。事实上,当我把它留空时,文字就为空。默认情况下,此选项位于另一个字符串列中,但如果我将其保留为空白,则会引发一些异常。我怎样才能做到?

编辑:这是错误

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at table.MyTableModel.setValueAt(MyTableModel.java:62)
at javax.swing.JTable.setValueAt(JTable.java:2710)
at javax.swing.JTable.editingStopped(JTable.java:4712)

这是 MyTaleModel 中的代码

public void setValueAt(Object value, int row, int col) {

data.get(row)[col] = value;
fireTableCellUpdated(row, col);
}

这是数据:static ArrayList<Object[]> data

这是列渲染器

public class ColumnRenderer extends DefaultTableCellRenderer {

int precision = 0;
Number numberValue;
NumberFormat nf;

public ColumnRenderer(int p_precision) {
super();
setHorizontalAlignment(SwingConstants.RIGHT);
precision = p_precision;
nf = NumberFormat.getNumberInstance();
nf.setMinimumFractionDigits(p_precision);
nf.setMaximumFractionDigits(p_precision);
}

@Override
public void setValue(Object value) {
if ((value != null) && (value instanceof Number)) {
numberValue = (Number) value;
value = nf.format(numberValue.doubleValue());
}
super.setValue(value);
}

最佳答案

不是真正的答案,但太长,无法发表评论。

如果您只想显示 Double 实例,则不需要自定义渲染器。默认渲染器能够处理这种情况。唯一的前提条件是您在 TableModel 中为 getColumnClass 方法返回正确的类。

你可以看到源代码中默认的渲染器就足够了。快速复制粘贴:

static class DoubleRenderer extends NumberRenderer {
NumberFormat formatter;
public DoubleRenderer() { super(); }

public void setValue(Object value) {
if (formatter == null) {
formatter = NumberFormat.getInstance();
}
setText((value == null) ? "" : formatter.format(value));
}
}

因此,您很可能做错了一些事情,但您没有告诉我们。发布堆栈跟踪和相关代码以获得更好的答案。

关于java - 在 jtable 的 double 类型单元格中输入空白值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13278978/

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