问题标签 [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.
java - 获取 JTable 的焦点有问题吗?
这是场景:我有一个 nxn 的 JTable。在每个单元格的 Col(0) 中,有一个滑块,两个拇指分别代表最小值和最大值,两个 JTextField 代表最小值和最大值。
每当我第一次单击单元格时,滑块不会响应,但第二次单击滑块会响应。
我的猜测是,第一次单击 JTable 获得焦点,第二次单击单元格。
希望单元格在第一次点击时做出响应。
提前谢谢你...
java - 默认单元格编辑器类查询?
这就是我JTable
从序列化数据中重建的方式:
我的场景是这样的:每当我第一次点击单元格的滑块时,它没有响应;在第二次单击时,组件响应,然后滑块响应第一次单击。
如何使滑块仅与第一次单击交互,而不是最初单击两次。
具有DefaultCellEditor
三个默认构造函数JCheckBox
:JComboBox
和JTextField
; 但我需要为JSlider
. 我怎样才能做到这一点?这是必要的吗?有人建议我使用setClickCountToStart(1)
.
java - 如何将 JTable 单元格输入标记为无效?
如果我采用 aJTable
并在其模型上指定列的类类型,如下所示:
然后,每当用户尝试double
在表格中输入值时,Swing 会自动拒绝输入并将单元格的轮廓设置为红色。
当有人向单元格输入“负数或 0”输入时,我希望发生相同的效果。我有这个:
这可以防止单元格接受任何非正值,但不会将颜色设置为红色并使单元格保持可编辑状态。
我尝试查看默认情况下 JTable 是如何拒绝的,但我似乎找不到它。
我怎样才能让它拒绝非正输入,就像它拒绝非整数输入一样?
java - 删除行时单元格编辑器不退出
我有一个带有几列的 JTable,其中之一是有一个自定义渲染器来在 JPanel 中显示 3 个按钮以及一个自定义编辑器以允许它们可点击。其中一个按钮向我们的服务器发送该行 ID 的删除命令,然后通过清除数据模型并再次加载数据从服务器重新加载表数据。发生这种情况时,带有 3 个按钮的单元格会继续显示(但不是该行的其余部分),直到我单击另一行中的另一个按钮,即使该行已经消失。
我已经设置putClientProperty("terminateEditOnFocusLost", Boolean.TRUE)
但将焦点更改为另一个组件并没有帮助。
我已经尝试在刷新数据之前删除行本身(甚至删除了所有行)并确保调用fireTableRowsDeleted()
.
我还尝试调用cancelCellEditing()
和stopCellEditing()
函数,TableCellEditor
甚至手动将编辑行/列设置为另一个单元格。
任何帮助将不胜感激。
好的,所以我想通了。我最终打电话removeEditor()
到桌子上并解决了它。
感谢您的回复。
java - JComboBox 作为自定义 TableCellEditor
我有一张桌子。该表更新数据库的更改。一列由该表中的 JComboBox 编辑。单击该列中的任何单元格都会触发 tableChanged 事件。但是,它需要在选择 JComboBox 的一个项目后触发。选择后如何使 tableChanged 发生?
java - actionPerformed 在 JButton 上作为 TableCellEditor 在 MouseDown 上错误地调用
我正在尝试使用JButton
asTableCellRenderer
和TableCellEditor
我的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 一起工作。
我能做些什么来完成这项工作?
谢谢。
java - 自定义单元格编辑器无法容纳 Nimbus 外观中的文本
我想在表格单元格中验证用户输入,并使用 Nimbus 外观。这是验证整数输入的单元格编辑器的代码:WholeNumberField
它扩展JTextField
并添加了输入验证。
当我为列设置它时,它工作正常,但它不能容纳文本:
当我使用默认单元格编辑器时,一切看起来都很好:
我怎样才能让这个编辑器看起来像默认编辑器?
java - JTable 单元格更新不起作用
在我的应用程序中,我使用了一个类似于此示例的 java 表。我的问题是当我更改单元格的值时(即使在上面的示例中),数据模型在我单击不同的单元格之前不会更新。即使我在更改单元格值后单击表格下方的灰色区域,模型也不会更改。我认为原因是单元格保持专注,直到我点击另一个单元格。如何避免这种情况并在不单击表格单元格的情况下更新模型。提前致谢
我已经编辑了上面的示例代码以反映问题
运行示例时,您可以在表格下方的文本区域中看到表格内容。更新单元格后,它应该出现在下面的文本框中。但是在您单击不同的单元格之前,不会调用“setValueAt”方法。
java - 使用复合 JPanel 单元格编辑器进行编辑后,JTable 失去焦点
我有一个单元格编辑器,它由 JPanel 上的几个组件组成。当我的自定义单元格编辑器停止编辑时,表格会失去焦点,而不是将焦点转移到下一个单元格。
这是一个简单的例子。在表格中输入每个单元格和选项卡。请注意,在访问第 3 列之后,表格失去焦点到面板上的另一个文本字段。
更新:这个问题似乎在 Java7 中得到修复。该示例必须使用 Java 6 运行才能查看焦点丢失行为。
我在这里找到了一个类似的问题,但解决方案似乎不完整,因为自定义编辑器上的文本字段没有焦点,它的光标不显示,使用户不清楚该字段可用于文本输入。
有人有更好的解决方案吗?
java - 如何让 JTable 停留在已编辑的单元格上
如果有人编辑 JTable 的单元格内容并按 Enter,则内容将被修改并且表格选择移动到下一行。
是否可以禁止 JTable 在单元格编辑后转到下一行?
原因是我的程序使用 ListSelectionListener 在单元格选择上同步了其他一些小部件,并且我不想在编辑当前单元格后选择下一行。