问题标签 [tablecelleditor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3529 浏览

java - 按下单独的 JBtton 时如何停止使用 DefaultCellEditor 进行编辑

我得到了一个带有自定义 TableCellEditor(扩展 DefaultCellEditor)的表格,其中 JFormattedTextField 作为编辑器组件。

现在我遇到了问题:当我在编辑时按下一个单独的按钮。按下按钮时,编辑器保持“打开并处于活动状态”,而我希望它停止编辑,以便所做的更改可用于按钮引起的操作。

那么如何在按下不同的按钮时停止编辑。我为 JFormattedTextField 尝试了setFocusLostBehavior ( JFormattedTextField.COMMIT)但它似乎没有效果。

希望有人有一些好主意=)

0 投票
2 回答
393 浏览

java - 错误对话框未被破坏

我正在开发一个项目,该项目使用 JTable 来显示日期列等。我们需要验证用户输入的日期,所以我实现了格式验证的掩码和实际日期验证的解析的组合。我已经使用日期列的自定义 CellEditor 完成了此操作。

在我的 MaskedCellEditor 中,我有一个 JFormattedTextField。我为日期设置了掩蔽。然后我添加一个 InputVerifier 以允许实际验证。我的 InputVerifier 实现 verify() 来检查: 1. textField.isEditValid() 2. DateValidator.ValidDate()。如果任一无效,则验证返回 false 并且 InputVerifier 将焦点锁定在文本字段(单元格编辑器)中,并显示一个小消息对话框,提醒用户注意日期格式。

错误消息是一个小的、未修饰的、非模态的、不可聚焦的 JDialog,它会在正在编辑的单元格下方弹出。它会在按键或成功的日期验证时消失。除了一个小的边缘情况外,它工作得很好。

如果用户在弹出对话框时选择了应用程序顶部的菜单按钮,则会切换屏幕,破坏当前屏幕上的所有内容(包括表格)。但是,由于正在显示对话框并且没有发生按键/成功编辑,因此该对话框永远不会隐藏。它在不同屏幕上的完全不相关的上下文中仍然可见。一旦用户关闭了带有表格的屏幕,用户就无法摆脱对话框。

我曾讨论过在对话框本身上抛出 Timer 和/或 MouseListener 会导致它消失,但我觉得我忽略了实际问题。该对话框永远不会被丢弃,我很确定它是因为它仍然设置为可见并且它阻止垃圾收集器摆脱它。

我在持有 JTable 的面板上有一个 Cleanup 方法,但我找不到一个好方法来引用对话框(InputVerifier 的一个组件)以摆脱它。该对话框与表格的父面板相距甚远。(面板 -> JTable -> CellEditor -> JFormattedTextField -> InputVerifier -> JDialog)

关于如何在表格被销毁时强制隐藏对话框的任何想法?如果您需要更多详细信息,请告诉我。我试图不让你们陷入细节中,但还有很多事情要做。

0 投票
2 回答
204 浏览

java - 重用 TableCellEditor 对象

所以我有很多表格和很多单元格编辑器,里面有很多东西。我想我应该重用它们,而不是每次都做 new() ,因为整个事情都设置了 getTableCellEditorComponent() 但是,几乎每次我尝试这样做时,我都会在旧单元格中得到“剩菜”和其他奇怪的东西。我通常可以通过每次制作一个新的来纠正问题,但这很糟糕吗?

谢谢!约书亚

0 投票
3 回答
15407 浏览

java - 使 JTable 单元格可编辑 - 但 * 不能* 通过双击

我正在尝试向JTable具有以下行为的列添加一列(类似于 Windows 资源管理器和类似的外壳):

  • 像往常一样,可以单击一次单元格以将其选中。
  • 可以双击单元格以执行单独的操作(启动外部程序。)
  • 仍然可以编辑单元格值(字符串),方法是再次单击(暂停后)或F2在单元格突出显示时按下。

双击不能触发单元格的编辑,但如果可能的话,我想保留任何其他默认的编辑触发器。

我尝试将 a 添加MouseListener到表中并消耗所有MouseEvents,但这不起作用 - 如果我从那时返回trueisCellEditable()我的侦听器将永远不会收到任何点击事件,但如果我返回falseF2不再工作。

这可以仅使用事件侦听器来实现吗?如果可以避免的话,我宁愿不要弄乱 PLAF 的功能。

0 投票
2 回答
2655 浏览

java - Java Swing:如何在 TreeListeners:valueChanged 之前调用 stopCellEditing()?

这是对这些早期问题的跟进:

当我使用该terminateEditOnFocusLost属性时,如下所示,当表格失去焦点时,我的 CellEditor 会正确停止编辑:

它也适用于我的 JButton。在处理按钮按下操作之前stopCellEditing(),为我的 TableCellEditor 调用该方法。但是当我将它与 JTree 一起使用时,树的选择发生了变化,该方法被调用beforeTreeSelectionListener.valueChanged stopCellEditing()

有谁知道是否有办法强制stopCellEditing()首先被调用,还是我应该为这个问题弥补一些变通方法?

0 投票
1 回答
439 浏览

java - Strange blinking of cell on selection with custom Cell Editor

I am new to working with JTables and having trouble with getting my custom JTable editor to work properly.

I have a number of custom panels with lists and buttons. To renderder them in a cell I am using a custom PanelCellRenderer that has various constructors for each type of the panel.

To make the buttons clickable I have created this simple PanelCellEditor that extends DefaultCellEditor. To access the data stored within cells at the time of editting I pass the reference to the PanelCellRenderer.

The problem I am having is that when I select the cell (by clicking at it), from displaying the list with the button, the cell selected becomes completely blank. When the cell gets deselected the list with data and the button reappear again. Any advice on this will be helpful. Thanks.

0 投票
6 回答
9676 浏览

java - 开始编辑 JTable Cell 时选择所有数据

我正在尝试制作一个像 Excel 一样工作的表格。意思是,当用户开始将数据插入单元格时,插入的新数据会选择并更改其中的内容。

0 投票
3 回答
2632 浏览

java - 在 JTable 中编辑单元格时提供附加行为

我正在用 Java 创建一个应用程序。在编辑 JTable 中的单元格时,我需要提供其他行为。所以理想情况下,当单元格在编辑后失去焦点时会发生这种情况。根据一些后期处理,我可能会重置单元格的值。我尝试使用单元格编辑器,但它没有给我想要的行为。

在默认的 JTable 中,只有当我双击一个单元格时,它才会变为可编辑的。但是在我的 CellEditor 实现中,单元格一旦成为焦点就变得可编辑。

这是我的自定义 CellEditor 的代码,

任何帮助将不胜感激。谢谢。

0 投票
1 回答
245 浏览

java - JTable 中的互斥单元格编辑器

我目前有一个问题,即在 JTable 中编辑一个单元格的内容会改变另一个单元格的内容;其中两列是互斥的。它们都是复选框。

目前,如果我改变一个单元格,直到另一个单元格被重绘,它才会更新。因此,该行中的两个单元格都可以显示为在任何时候被选中。这可以通过调用 updateUI() 来克服,但它很慢而且通常不是一个好主意。

有没有人有任何提示或建议?

0 投票
2 回答
2703 浏览

swing - 带有 JComboBox 编辑器的 JTable:是否可以通过一键从键盘编辑单元格值

我有一个包含 JComboBox 编辑器的 JTable 初始化有点像

这工作正常,但我希望能够在表格中导航并仅使用键盘更新值。现在这可以通过组合框实现,但如果我想更新值“1”,我必须先按一个键来激活组合框,然后按“1”来选择该项目。

所以,我想要的是我可以按“1”,只需按一下键就可以选择项目。

对于文本单元格,我已经设法使用 prepareEditor 做到这一点,如下所示......

...但我还没有弄清楚如何处理组合框。

一种可能性可能是自己的 TableCellEditor 但如果有一个更简单的解决方案会很好 =)

兄弟,图科