gpt4 book ai didi

java - 如何跨表格单元格和文本字段镜像编辑

转载 作者:行者123 更新时间:2023-12-02 08:35:11 24 4
gpt4 key购买 nike

所需的行为类似于选择给定单元格时 Excel 中提供的镜像文本编辑字段,从而允许有更多空间来查看单元格的内容。我有一个包含 5 列和 n 行的 JTable。第 2 列包含可以任意长的表达式,因此我想提供一个单独的 JTextField 来编辑每行表达式单元格的内容。其他字段可直接在表中编辑。然而,当用户单击第 2 列中的字段时,我想将它们发送到文本字段。单元格中预先存在的任何内容都应显示在文本字段中,并且文本字段中的其他编辑应反射(reflect)在表格单元格中。同样,如果有人双击单元格并直接编辑它,我希望这些更改反射(reflect)在文本字段中。因此,用户可以选择在任一空间中进行编辑,并且两者都会更新。理想情况下,它们会在每次击键时更新,但按回车键更新也是可以接受的。

到目前为止,我已经有了 JTable、TableModel、TableModelListener、JTextField、ListSelectionListener 和 AbstractAction,它们一起工作来提供上述的大部分功能。我缺少对文本字段的直接表格单元格编辑和每次按键更新的反射(reflect)。

他们对如何最好地构建这种行为有何想法?

最佳答案

好吧,如果您想从表单元格获取数据,那么您可以将代码添加到 TableModel 的 setValueAt() 函数中,该函数应该在用户更改可编辑单元格中的内容。我不认为这会更新每次击键。

如果您想将数据文本框移动到表格单元格,请使用如下代码

myJTextField.getDocument().addDocumentListener(new MyDocumentListener());

其中MyDocumentListenerjavax.swing.event.DocumentListener接口(interface)的实现

将为您提供从框到表的每次击键更新。但反过来说就有点棘手了。

您可以通过两种方法来做到这一点

1) 向表中添加一个按键监听器,当用户开始键入时检查哪些表元素处于 Activity 状态,并在键入时拦截击键。不过,这有点困惑。

2) 另一种选择可能是尝试获取或替换表正在使用的组件,以实际让用户进行更改。我认为,如果您深入研究,JTable 实际上允许您更改编辑器组件。

关于java - 如何跨表格单元格和文本字段镜像编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2084394/

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