草庐IT

java - JTable 的任何单元格中更改的正确事件是什么?

我有一个简单的JTable,有两列很重要:数量和值(整数)。每次用户输入新行或更新行时,每个行的值都必须乘以数量,将结果相加,并将结果总和显示在JTable外部的JLabel中。看起来很简单。除了我不知道我应该寻找什么事件。像“单元格值改变”之类的东西?当我右键单击NetBeans中的JTable时,我看不到这样的事件或不认识它;)无论如何,在我想出一些奇怪的菜鸟解决方案之前,我想我可能会在这里问什么是正确的方法:) 最佳答案 你应该添加一个TableModelListener如所述here.此外,在您的监听器中,一旦您以编程方式更

java - 如何在多选时获取JTable中的焦点单元格

我有一个包含10行的JTable。如果我在JTable上有多个选择,我如何获得当前聚焦的单元格?我曾尝试使用JTable的getEditingColumn()和getEditingRow(),但它们在多重选择期间总是返回-1。 最佳答案 命令;table.getSelectionModel().getLeadSelectionIndex();table.getColumnModel().getSelectionModel().getLeadSelectionIndex();分别给出选中的行和列。

java - 单元格编辑后如何保持 JTable 单元格呈现

你们真是太棒了,在我上一个问题中为我指明了正确的方向,我在这里对我的原始问题进行了某种扩展:HowtosetaJTablecolumnasStringandsortasDouble?因为我现在通过使用我的自定义单元格渲染器将我的价格列格式化为$###,##0.00,所以我现在也为该单元格设置了一个JTextField编辑器。单元格的编辑工作正常,除了更新值时,我的自定义渲染器中设置的数字格式似乎不再格式化单元格(我在提交编辑后丢失了$)。即使在初始显示数据之后,此渲染器也不应该渲染单元格吗?我曾尝试使用以下内容,但没有成功:((AbstractTableModel)table.getM

java - JTable RowFilter 是如何工作的?

我尝试为JTable创建行过滤器以限制表中显示的行数。RowFilter代码很简单。它将模型行号转换为View行号(如果表格已排序),然后检查View行号是否小于表格中要显示的行数:RowFilterfilter=newRowFilter(){@Overridepublicbooleaninclude(RowFilter.Entryentry){intmodelRow=entry.getIdentifier();intviewRow=table.convertRowIndexToView(modelRow);returnviewRow问题是模型行号并不总是转换为合理的View行号,因此

java - 将 JScrollPane 滚动到 JTable 上的特定行

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:JTableScrollingtoaspecifiedrowindex我有一个JTable,我需要使用以下代码以编程方式选择一行:myTable.setRowSelectionInterval(i,j);(其中i和j分别是有效的行号和列号)。问题是,当你跳到一行时,JScrollPane并没有移动。在这种情况下,表格很长,而且屏幕上通常看不到“所选行”,因此用户必须手动向上/向下滚动才能找到它。我想知道如何让JScrollPane自动跳转到该行的特定位置。编辑:找到一个可以做到这一点的类轮:table.scr

java - 如何从 JTable 中获取数据?

好的,我想从JTable的第一列中获取所有数据。我认为最好的方法是将其放入ArrayList中,所以我做了一个。我还制作了一个TableModel的实例:staticDefaultTableModelmodel=newjavax.swing.table.DefaultTableModel();f.data.setModel(model);//f.dataistheJTablepublicstaticfinalvoidCalculateTotal(){ArrayListnumdata=newArrayList();for(intcount=1;count这给了我一个NullPointer

java - Stacktrace 的异常仅包含 Java 库调用

如果错误的堆栈跟踪(不发生在主线程中)不包含您的任何方法,可以采取什么可能的行动来找出问题所在?有问题的完整跟踪:Exceptioninthread"AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException:0>=0atjava.util.Vector.elementAt(UnknownSource)atjavax.swing.table.DefaultTableColumnModel.getColumn(UnknownSource)atjavax.swing.plaf.basic.BasicTableHeaderUI.getH

java - 选择该表中的任何行后,如何使 JTable 行变为 "unselected"状态?

我正在开发一个包含JTable的JavaSwing应用程序。默认情况下,首次启动应用程序时,调用方法jtable.getSelectedRow()或jtable.getSelectedColumn()返回-1,这意味着没有当时选择的行。用户单击任何行或列后,调用方法jtable.getSelectedRow()或jtable.getSelectedColumn()返回所选行和列的适当值。我真正需要的是我想将选定的行或列设置为-1,即“没有行或列选择状态”。我该怎么做? 最佳答案 JTable方法clearSelection将执行您想

java - 为什么 Java DefaultTableModel 使用 Vector?

我知道我们必须对所有表模型更新操作使用AWT线程。在单AWT线程下,任何表模型都是线程安全的。为什么DefaultTableModel选择线程安全的Vector作为其数据结构,它比ArrayList等其他数据结构慢? 最佳答案 Swing最早出现在Java1.2之前,所以在ArrayList可用之前。不幸的是,DefaultTableModel的API暴露了它使用Vector的事实,因此现在更改它会向后不兼容。这正是仔细考虑封装的原因-它可以让您稍后更改内部结构。(诚​​然,获得正确的序列化会很有趣,但这是另一天的故事......)

java - JTable 单元格渲染器

我正在遵循我发现的一些代码,(是的,我明白它是如何工作的)来自这里:CodeLink如果单元格值设置为“黄色”,我要做的是设置单元格前景色这是我的代码:publicclassBoardextendsJPanel{privatestaticfinallongserialVersionUID=1L;intboardHeight=20;intboardWidth=10;JTabletable;publicBoard(){table=newJTable(this.boardHeight,this.boardWidth);table.setDefaultRenderer(String.class