- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 JTable 中编辑单元格值时,它的值突然以指数形式出现(即 1.7E10),而不是以正常的用户友好形式显示。
如何在编辑单元格值时更改数字格式?
...
解决方案非常简单,必须像那样创建我自己的 TableCellEditor:
public static class Double2DecimalEditor extends AbstractCellEditor implements TableCellEditor{
private static final long serialVersionUID = 1L;
private JComponent component = new JTextField();
private NumberFormat nf;
@Override
public Object getCellEditorValue() {
System.out.println("getCellEditorValue");
NumberFormat nf = new DecimalFormat("#,###.###");
String text = ((JTextField)component).getText();
System.out.println("TEXT = " + ((JTextField)component).getText());
return nf.format(Double.parseDouble(text));
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
System.out.println("getCellEditorComponent");
Double data = Double.valueOf(value.toString().replace(",", ""));
NumberFormat nf = new DecimalFormat("#.###");
((JTextField)component).setText(nf.format(data));
((JTextField)component).setHorizontalAlignment(SwingConstants.RIGHT);
return component;
}
}
感谢大家的建议!
最佳答案
据我所知,这一行破坏了您的代码
textField.setText((value != null) ? value.toString() : "");
这发生在 JTable 使用的 javax.swing.DefaultCellEditor#DefaultCellEditor 中。
您必须添加自己的应用格式的编辑器。
应该也差不多
table.setDefaultEditor(Double.class, new DefaultCellEditor(new JTextField())
{
public Component getTableCellEditorComponent( JTable table, Object value,
boolean isSelected,
int row, int column )
{
String formattedvalue = formatyourvalue(value);
delegate.setValue(formattedvalue);
return editorComponent;
}
});
应用于您更改 makeTable 的示例
private static JTable makeSampleTable()
{
String[] columnNames = {"String", "Integer", "Boolean", "Double"};
Object[][] data = {{"AAA", 12, true, 111111111111.15},
{"BBB", 1, false, 11199999111.15}, {"CCC", 2, true, 1155555511111.15},};
DefaultTableModel m = new DefaultTableModel(data, columnNames)
{
private static final long serialVersionUID = 1L;
@Override
public Class<?> getColumnClass( int column )
{
return getValueAt(0, column).getClass();
}
};
JTable table = new JTable(m);
TableColumnModel tm = table.getColumnModel();
tm.getColumn(3).setCellRenderer(new Double2DecimalRenderer());
table.setDefaultEditor(Double.class, new DefaultCellEditor(new JTextField())
{
public Component getTableCellEditorComponent( JTable table, Object value,
boolean isSelected,
int row, int column )
{
NumberFormat nf;
nf = NumberFormat.getNumberInstance();
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
if ( ( value != null ) && ( value instanceof Number ) )
{
Number numberValue = (Number) value;
delegate.setValue(nf.format(numberValue.doubleValue()));
}
else
{
delegate.setValue(value);
}
return editorComponent;
}
});
return table;
}
关于java - 编辑单元格值时以十进制格式显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8654449/
这个问题已经有答案了: How do I attach events to dynamic HTML elements with jQuery? [duplicate] (8 个回答) How to
我通常从问题代码开始写 git 注释,像这样: #3533: Fixed VIB (Very Important Bug) 当我从命令行执行提交时,我写 git commit -a -m "#3533
以下命令构建我的函数并将其发布到 Azure。但它总是在 Debug模式下构建 - 如何使其切换到在 Release模式下构建? func azure functionapp publish NAME
我需要在 virtualenv 中以 sudo 身份运行 python 脚本。但是,运行 sudo python 将运行全局 python 解释器,而不是来自 virtualenv 的解释器。 有办法
我想制作一个自定义按钮并在自定义按钮类内的选择器内提供输入,但它给我一个错误消息。我该如何修复它 我在 Playground 上测试它,因为当我运行到模拟器时应用程序崩溃了。这是 Playground
我是 Angular 的新手,ng-repeat 对我不起作用。 我的第一个 ng-repeat 有效,但我使用 json 字符串的第二个无效。它提示 ng-repeat dupes 但我不明白为什么
每当麦克风听到打响指的声音时,我都会尝试加 1。 var sketch = function (p) { with(p) { var mic; va
我在 ng build --prod 时遇到堆内存不足错误,是否有任何解决方法。当 --aot=false 时它的构建很好。 有什么想法吗? 最佳答案 尝试通过以下脚本在 json 包中运行构建脚本:
我正在尝试部署一个rest api,而不涉及任何类型的UI/html 文件。我只是想让它响应一些 json 响应主体,仅此而已。我使用 spring 和 java 11。此请求在 localhost
我正在使用 Tomcat 运行一个 Java 网络应用程序,我有我的 Java 类和 .jsp 文件呈现网络。我正在尝试实现一项功能,您可以在其中搜索文件中的关键字,然后返回文件,以便用户可以从网页上
我正在尝试实现一个由 Spring 提供支持的服务器发送事件 (SSE) 网页。我的测试代码执行以下操作: 浏览器使用 EventSource(url) 连接到服务器。 Spring 接受带有以下 C
我正在使用 Visual Studio Code 中的远程 SSH 扩展连接到 Azure 中的虚拟机。问题是我不能以 root 身份 ssh,但需要 root 权限来编辑/etc 文件夹中的某些文件
我们有一个作为 Windows 服务安装的 C# 控制台应用程序。目标 64 位计算机运行的是 Windows Server 2012。我们使用了 64 位 installutil 实用程序: C:\
我的计算机上安装了 VS2010 和 VS2012,并安装了 .NET Framework 4.0,然后我将其升级到 .NET Framework 4.5。但是,我仍在开发需要在 .NET Frame
我正在使用 Express 在 NodeJs 之上用 javascript 编写 CMS。我的目标是构建我在过去几年中每天都在 .NET 中构建的东西,但现在完全是在 javascript 中构建的。
我有以下 docker-compose.yml 文件: version: "3.3" services: api: build: ./api expose: - '80
如何在将数据插入到 Db 时以 asp.net mvc4 形式自动生成 GUID 我需要将 GUID 数据类型添加到我的表中,并且需要在提交其他数据时自动插入 16 位值 最佳答案 请检查以下链接..
我正在使用时刻时区,因此我可以从选定的时区转换为客户端的时区。 我无法以比这更好的方式实现它: convertSelectedTimeZoneToClients() { let timeZon
这个问题在这里已经有了答案: Empty body in fetch POST request (5 个回答) 3年前关闭。 在我的 React 应用程序中,当我提交表单以创建新用户时,我使用 fet
ngRouteProvider依赖注入(inject)出错可能是什么原因 注意:$location依赖于ngRoute,这就是为什么我需要注入(inject)它,而我并没有真正使用它,而只是使用$lo
我是一名优秀的程序员,十分优秀!