- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个扩展 AbstractTableModel
的 TableModel
。但其内容会定期更改,并且列数会根据显示的数据而变化。有时,我需要使用 ComboBox
来编辑第 2 列中的单元格,有时我需要使用 ComboBox
来编辑第 3 列中的单元格。
我知道您可以通过执行 table.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(myComboBox));
我可以动态设置 TableModel
中的 CellEditor
吗,以便在调用 table.updateUI( 时更新
?CellEditor
)
编辑:我基本上是在传递我正在使用的 TableModel
一个大的 WellCollection
数据结构。冒着让您厌倦细节的风险,它由 Wells
组成,其中由 Attributes
组成,后者又由 ProposeValues
组成。不过,这并不是太重要。重要的是,我希望用户能够翻转属性,并在单击“下一步”时在表中显示不同的 ProposeValues
(我之前使用 updateUI()
完成了这一点) )。
请注意,属性
可以是高程类型,也可以不是高程类型。如果是高程类型,则需要额外增加一列。
这是我的代码:
public class ProposedValueTableModel extends AbstractTableModel{
private WellCollection wells;
public ProposedValueTableModel(WellCollection wells){
this.wells = wells;
}
@Override
public int getColumnCount() {
// if we're dealing with elevation values, we want fields for the value, the elevation type,
// the source, and additional comments. If not, only show value, source, and comments.
if(wells.getCurrAttribute().isElevationType())
return 4;
else return 3;
}
@Override
public int getRowCount() {
//NOTE: add 1 for extra, blank row!
return wells.getCurrAttribute().getProposedValues().size()+1;
}
@Override
public Object getValueAt(int row, int col) {
//TODO: convert this to handy dandy switch statements
// make the last row blank to allow entries
if (row==wells.getCurrAttribute().getProposedValues().size())
return "";
ProposedValue propVal = wells.getCurrAttribute().getProposedValues().get(row);
//if we're NOT dealing with an elevation type, simply have three fields
if(wells.getCurrAttribute().isElevationType()==false){
switch(col){
case 0:
return propVal.val;
case 1:
return propVal.source;
case 2:
return propVal.comment;
}
}
// if it IS an elevation value, include elevation type
else{
switch(col){
case 0:
return propVal.val;
case 1:
return propVal.elevType;
case 2:
return propVal.source;
case 3:
return propVal.comment;
}
}
return "";
}
public String getColumnName(int col){
if(wells.getCurrAttribute().isElevationType() ==false){
switch(col){
case 0:
return "Proposed value";
case 1:
return "Source";
case 2:
return "Comment";
}
}
else{
switch(col){
case 0:
return "Proposed value";
case 1:
return "Type";
case 2:
return "Source";
case 3:
return "Comment";
}
}
return "header";
}
public boolean isCellEditable(int row, int col){
return true;
}
public void setValueAt(Object value, int row, int col){
// we're adding something to the last row, then add a new ProposedValue to the proposedValues array
if(row == wells.getCurrAttribute().getProposedValues().size()){
wells.getCurrAttribute().getProposedValues().add(new ProposedValue());
}
ProposedValue propVal = wells.getCurrAttribute().getProposedValues().get(row);
if(wells.getCurrAttribute().isElevationType()==false){
switch(col){
case 0:
// Value
propVal.val = (String)value; break;
case 1:
// Source
propVal.source = (String)value; break;
case 2:
// Comment
propVal.comment = (String)value; break;
}
}
else{
switch(col){
case 0:
// Value
propVal.val = (String)value; break;
case 1:
// Elevation type
propVal.elevType = (String)value; break;
case 2:
// Source
propVal.source = (String)value; break;
case 3:
// Comment
propVal.comment = (String)value; break;
}
}
//TODO: find out why this is necessary
fireTableCellUpdated(row, col);
}
}
最佳答案
Can I set the CellEditor within my TableModel dynamically, so that the CellEditor is updated when I call table.updateUI()?
I'm creating a TableModel which extends AbstractTableModel. Its contents, though, changes regularly and the number of columns changes depending on the data displayed. Occasionally, I'll need to use a ComboBox to edit the cells in column 2, and occasionally I'll need a ComboBox for cells in column 3.
Can I set the CellEditor within my TableModel dynamically
为了获得更好的帮助,请尽快发布 SSCCE ,简短,可运行,可编译,大约是 JFrame
和 JScrollPane
中的 JTable
,AbstractTableModel
的硬编码值存储为 局部变量
关于java - 如何在 TableModel 中定义主动更新的 CellEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15884654/
我已将其中一列的单元格编辑器设置为 JSpinner 并且它可以工作,但是当数据模型中的数据更改时,我之前启用的编辑器仍处于启用状态,它会显示旧行的值(它不存在)或者它在更改的数据中位于不同的位置)。
在我的 JTable 中,我有两个可编辑的数字列。两列的编辑器都扩展了 AbstractCellEditor 并使用 JFormattedTextField 作为编辑组件。 问题在于输入的格式取决于行
我陷入了以下问题,找不到我做错了什么。我的问题是替换 JTable 单元格的默认编辑器并使用 ComboBox。我的代码看起来工作正常,但没有达到预期的效果。经过深思熟虑,并验证了 Oracle 在他
我用 celleditor 制作了与此类似的表格: http://demo.qooxdoo.org/current/demobrowser/#table~Table_Cell_Editor.html
我在使用 编辑表格时遇到一些问题 我使用encoding='windows-1252'能够使用瑞典语字符 (å, ä, ö) 。创建一个实体工作正常,但是当我在 中编辑它时使用它会提交意想不到的字
我正在创建一个扩展 AbstractTableModel 的 TableModel。但其内容会定期更改,并且列数会根据显示的数据而变化。有时,我需要使用 ComboBox 来编辑第 2 列中的单元格,
我不知道如何在特定行中设置 jcombobox...现在我已经为所有行设置了这个 jcombobox,但我希望它只在一行中: JComboBox cc = new JComboBox(); cc.ad
我正在寻找如何执行此操作的最佳解决方案。我有什么: // model Ext.define("User", { extend: "Ext.data.Model", fields: [
我需要使用 JXDatePicker 使我的 JTable 中的日期单元格可编辑。我想我需要实现 TableCellEditor,但我不敢自己解决它。有没有人有可以帮助我的链接或一段快速代码? 最佳答
我想从用户列表中选择: user.ts export class User { constructor (public id: number, public userName : string
我在 Primefaces 中有一个数据表,带有一个 celleditor 来上传和下载文件。文件上传工作。文件下载不起作用,它只会重新加载页面。当我将下载按钮直接放在 p: 列下时,下载工作正常。
我应该处理CellEditor从 EditingSupport.getCellEditor 返回,如果是这样,我应该什么时候做。 关于 jface 的教程之一 TableViewer我看到以下片段:
我有一个可编辑的 与 我想使用 将该表格的内容导出为 PDF 格式. 我已经包括了 itext 2.1.7 jar .我得到了 PDF 格式的输出,但它显示了 Object#toString()所有
这是我的代码不起作用: ...
我有一个带有 ComboBoxViewerCellEditor 编辑支持的 TreeViewerColumn 。现在,当我使用普通 Combo 时,我可以添加自动完成功能,如下所示: new Auto
简短版本:给定一个带有扩展 DefaultTableModel 的 TableModel 的 JTable,我可以在不使用 CellEditor 的情况下选择具有 String 类的单元格中的所有文本
当先前的编辑完成时,我想通过自动跳转到表格查看器中的下一个单元格来安慰用户。用户需要修改条目列表中的开始-结束时间。我想知道如何手动(以编程方式)触发特定单元格的 CellEditor。我以前没有在
我无法让这个带有 DocumentFilter 的 CellEditor 正常工作。当我在唯一可编辑的列中键入内容时,PlainDocument 中的 insertString 不会被调用,docum
我正在尝试为我的 JTable 列创建一个 DefaultCellEditor ,以便我可以设置计划的开始时间和结束时间。但是,我不明白为什么当我在 JTable 的单元格中使用 JSpinner 输
我有一个带有自定义 CellEditor 的 JTable,在 JScrollPane 中使用 JTextArea。当我通过鼠标点击进入编辑模式时,它工作得很好。但是,当我尝试在单元格聚焦时键入一些字
我是一名优秀的程序员,十分优秀!