问题标签 [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 投票
2 回答
261 浏览

java - 获取 JTable 的焦点有问题吗?

这是场景:我有一个 nxn 的 JTable。在每个单元格的 Col(0) 中,有一个滑块,两个拇指分别代表最小值和最大值,两个 JTextField 代表最小值和最大值。

每当我第一次单击单元格时,滑块不会响应,但第二次单击滑块会响应。

我的猜测是,第一次单击 JTable 获得焦点,第二次单击单元格。

希望单元格在第一次点击时做出响应。

提前谢谢你...

0 投票
2 回答
584 浏览

java - 默认单元格编辑器类查询?

这就是我JTable从序列化数据中重建的方式:

我的场景是这样的:每当我第一次点击单元格的滑块时,它没有响应;在第二次单击时,组件响应,然后滑块响应第一次单击。

如何使滑块仅与第一次单击交互,而不是最初单击两次。

具有DefaultCellEditor三个默认构造函数JCheckBoxJComboBoxJTextField; 但我需要为JSlider. 我怎样才能做到这一点?这是必要的吗?有人建议我使用setClickCountToStart(1).

0 投票
4 回答
11597 浏览

java - 如何将 JTable 单元格输入标记为无效?

如果我采用 aJTable并在其模型上指定列的类类型,如下所示:

然后,每当用户尝试double在表格中输入值时,Swing 会自动拒绝输入并将单元格的轮廓设置为红色。

当有人向单元格输入“负数或 0”输入时,我希望发生相同的效果。我有这个:

这可以防止单元格接受任何非正值,但不会将颜色设置为红色并使单元格保持可编辑状态。

我尝试查看默认情况下 JTable 是如何拒绝的,但我似乎找不到它。

我怎样才能让它拒绝非正输入,就像它拒绝非整数输入一样?

0 投票
2 回答
139 浏览

java - 删除行时单元格编辑器不退出

我有一个带有几列的 JTable,其中之一是有一个自定义渲染器来在 JPanel 中显示 3 个按钮以及一个自定义编辑器以允许它们可点击。其中一个按钮向我们的服务器发送该行 ID 的删除命令,然后通过清除数据模型并再次加载数据从服务器重新加载表数据。发生这种情况时,带有 3 个按钮的单元格会继续显示(但不是该行的其余部分),直到我单击另一行中的另一个按钮,即使该行已经消失。

我已经设置putClientProperty("terminateEditOnFocusLost", Boolean.TRUE)但将焦点更改为另一个组件并没有帮助。

我已经尝试在刷新数据之前删除行本身(甚至删除了所有行)并确保调用fireTableRowsDeleted().

我还尝试调用cancelCellEditing()stopCellEditing()函数,TableCellEditor甚至手动将编辑行/列设置为另一个单元格。

任何帮助将不胜感激。


好的,所以我想通了。我最终打电话removeEditor()到桌子上并解决了它。

感谢您的回复。

0 投票
2 回答
9005 浏览

java - JComboBox 作为自定义 TableCellEditor

我有一张桌子。该表更新数据库的更改。一列由该表中的 JComboBox 编辑。单击该列中的任何单元格都会触发 tableChanged 事件。但是,它需要在选择 JComboBox 的一个项目后触发。选择后如何使 tableChanged 发生?

0 投票
1 回答
1225 浏览

java - actionPerformed 在 JButton 上作为 TableCellEditor 在 MouseDown 上错误地调用

我正在尝试使用JButtonasTableCellRendererTableCellEditor我的JTable. 在我的测试场景中,我有 5 行,每行都显示JButton为渲染器和编辑器(编辑器和渲染器的不同按钮实例)。当我第一次单击一个按钮时actionPerformed,编辑器按钮被调用,当我释放鼠标按钮时。然后,当我单击另一行中的另一个按钮actionPerformed时,当我按下鼠标按钮(MOUSE_PRESSED)时,已经调用了编辑器按钮的 -Event。这种行为似乎不对。通常actionPerformed在释放鼠标按钮时调用-event,而不是在按下它时。之后按下另一行中的另一个按钮actionPerformed时,释放鼠标按钮时再次正确调用,在下一个按钮上单击另一行actionPerformed再次(错误地)调用MOUSE_DOWN等等。

当将焦点移出表格然后单击按钮actionPerformed时,释放鼠标按钮时会正确调用。此外,当要单击的按钮所在的行中的表行编辑器首先聚焦(激活)然后单击该按钮时,该行为也是正确的。然后只有当它不起作用时,表格单元格编辑器处于活动状态,然后单击另一个表格行中的按钮。

比较actionPerformed两种情况下调用时的堆栈跟踪,我发现在不正确的情况下DefaultKeyboardFocusManager(KeyboardFocusManager).redispatchEvent并被BasicButtonListener.focusLost(FocusEvent)调用,这对我来说都是可疑的。

这是我的问题的一些演示代码:

当您启动程序并点击任何“aa”按钮时,它会变成“bb”(表示显示编辑器而不是渲染器)并且当您释放鼠标按钮时,“BUTTON EVENT”会打印在 STDOUT 上。如果您单击另一行中的另一个按钮,它也会变成“bb”,但在您释放鼠标按钮之前,“BUTTON EVENT”已经打印到 STDOUT。而且按钮文本周围的焦点矩形也没有显示。

我用 Java 1.6.0_26 和 1.6.0_27 测试了这种行为。当我使用 1.5.0_17 时,情况变得更糟:单击第二个按钮时,没有调用 actionPerformed,只显示“bb”按钮。第三次点击再次正常工作,第四次没有,依此类推。所以与 Java 1.6 的区别在于,在 1.6 上,第二次(和第四次,...)单击 actionPerformed 在释放鼠标按钮时被调用,而在 1.5 上根本不被调用。

但我不在乎 1.5,我只希望它与 1.6 一起工作。

我能做些什么来完成这项工作?

谢谢。

0 投票
3 回答
726 浏览

java - 自定义单元格编辑器无法容纳 Nimbus 外观中的文本

我想在表格单元格中验证用户输入,并使用 Nimbus 外观。这是验证整数输入的单元格编辑器的代码:WholeNumberField 它扩展JTextField并添加了输入验证。

当我为列设置它时,它工作正常,但它不能容纳文本:

文本剪切

当我使用默认单元格编辑器时,一切看起来都很好:

正常外观

我怎样才能让这个编辑器看起来像默认编辑器?

0 投票
3 回答
8376 浏览

java - JTable 单元格更新不起作用

在我的应用程序中,我使用了一个类似于示例的 java 表。我的问题是当我更改单元格的值时(即使在上面的示例中),数据模型在我单击不同的单元格之前不会更新。即使我在更改单元格值后单击表格下方的灰色区域,模型也不会更改。我认为原因是单元格保持专注,直到我点击另一个单元格。如何避免这种情况并在不单击表格单元格的情况下更新模型。提前致谢

我已经编辑了上面的示例代码以反映问题

运行示例时,您可以在表格下方的文本区域中看到表格内容。更新单元格后,它应该出现在下面的文本框中。但是在您单击不同的单元格之前,不会调用“setValueAt”方法。

0 投票
1 回答
3388 浏览

java - 使用复合 JPanel 单元格编辑器进行编辑后,JTable 失去焦点

我有一个单元格编辑器,它由 JPanel 上的几个组件组成。当我的自定义单元格编辑器停止编辑时,表格会失去焦点,而不是将焦点转移到下一个单元格。

这是一个简单的例子。在表格中输入每个单元格和选项卡。请注意,在访问第 3 列之后,表格失去焦点到面板上的另一个文本字段。

更新:这个问题似乎在 Java7 中得到修复。该示例必须使用 Java 6 运行才能查看焦点丢失行为。

我在这里找到了一个类似的问题,但解决方案似乎不完整,因为自定义编辑器上的文本字段没有焦点,它的光标不显示,使用户不清楚该字段可用于文本输入。

有人有更好的解决方案吗?

0 投票
2 回答
1206 浏览

java - 如何让 JTable 停留在已编辑的单元格上

如果有人编辑 JTable 的单元格内容并按 Enter,则内容将被修改并且表格选择移动到下一行。

是否可以禁止 JTable 在单元格编辑后转到下一行

原因是我的程序使用 ListSelectionListener 在单元格选择上同步了其他一些小部件,并且我不想在编辑当前单元格后选择下一行。