Tag: tablecelleditor

在JTable中编辑单元格时提供其他行为

我正在用Java创建一个应用程序。 在编辑JTable中的单元格时,我需要提供其他行为。 理想情况下,当编辑后细胞失去焦点时会发生这种情况。 根据一些后期处理,我可能会重置单元格的值。 我尝试使用单元格编辑器,但它没有给我所需的行为。 在默认的JTable中,只有当我双击一个单元格时,它才变得可编辑。 但是在我的CellEditor实现中,细胞一旦成为焦点就变得可编辑。 这是My custom CellEditor的代码, public class ParameterDefinitionEditor extends AbstractCellEditor implements TableCellEditor{ private JTable table; private DefaultTableModel defaultTableModel; public ParameterDefinitionEditor(DefaultTableModel defaultTableModel, JTable table) { super(); this.table = table; this.defaultTableModel = defaultTableModel; TableColumnModel columnModel = table.getColumnModel(); columnModel.getColumn(0).setCellEditor(this); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { […]

作为JTable-CellEditor的JTextArea-Dialog错过了第一个输入的字符

我们需要一个用于JTable的CellEditor来编辑大型多行文本。 我们尝试使用一个可视化扩展TableCell的弹出TableCell ,它将细胞重叠到右边和底部。 如果电池位于右下角,屏幕边界附近等,则会导致各种问题。 然后我们决定使用模态JDialog来编辑单元格值。 因此用户可以移动对话框,我们可以坚持其大小和位置。 现在问题开始了;-) 我们无法将第一个键入的字符“转发”到Dialog。 有很多关于堆栈溢出的例子,这个问题是针对自定义CellEditor解决的,它直接显示在Table(Cell)中,例如: 在基于JTable面板的单元格编辑器中丢失第一个字符 以下SSCCE(来自camickrs的回答: https ://stackoverflow.com/a/3591230/361227)显示第二个TableColumn中的第一次击键大部分时间都会丢失。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Frame; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; /** * Example taken from this […]

SWT Combo和CCombo作为CellEditor

为什么最后一项是空白的? 我只有3个项目(它是一个三态布尔编辑器)。 CCombo能否实现这种坚固的Combo外观和感觉? 作为一个组合单元格编辑器,我更喜欢常规的Combo ,但是: 这个Combo可以用作CellEditor ,同时适合表行高度吗? (也许让Font更小?)

JXTable:对特定单元格而不是整列使用TableCellEditor和TableCellRenderer

我有一个6列的JXTable复合,其中两个是JCheckBox 。 我想有以下行为: 如果选中第一个复选框,则启用第二个复选框,可以检查或不检查。 如果未选中第一个复选框,则必须禁用并取消选中第二个复选框。 我用Photoshop编辑了一个图像以显示所需的结果: 对于CheckOne和CheckTwo列,我使用自定义TableCellEditor和TableCellRenderer : public class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor { private static final long serialVersionUID = 1L; private JCheckBox checkBox = new JCheckBox(); public CheckBoxCellEditor() { checkBox.setHorizontalAlignment(SwingConstants.CENTER); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { checkBox.setSelected(value==null ? false : (boolean)value); return checkBox; […]

删除JTable中的JCombobox边框

我从JComoboBox删除了箭头按钮,使其看起来像JTextField ,并将其添加为celleditor。 目的是创建一个AutoSuggest(非自动完成)JTable单元。 在这样做的边界有点看起来像irking。如何更改边框使其看起来像右侧的文本域边框。 我试过删除边框创建的线条边框。 但它没有移除蓝色边界。 使用Nimbus UI。 MCVE的问题 import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class Sample extends JFrame { public Sample() { init(); } private void init() { JTable table = new JTable(5, 5); DefaultCellEditor cellEditor = […]

开始编辑JTable Cell时选择所有数据

我正在尝试制作一个像Excel一样工作的表。 这意味着,当用户开始将数据插入单元格时,内容将被选中并通过插入的新数据进行更改。

带有JComboBox的Java JTable

我正在尝试将JComboBox放在JTable的某个列中。 我有这个代码,它正在工作: model = new DefaultTableModel(); JComboBox optionComboCell = new JComboBox(); optionComboCell.addItem(“Option 1”); optionComboCell.addItem(“Option 2”); optionComboCell.setSelectedIndex(1); table = new JTable(model); // Adding here all the columns, removed for clarity model.addColumn(“Options”); TableColumn optionsColumn = table.getColumn(“Options”); optionsColumn.setCellEditor(new DefaultCellEditor(optionComboCell)); 我的问题是,在选择该列中的单元格之前,它不会显示为JComboBox。 加载JFrame时,整个表看起来都一样,就好像所有单元格只有文本一样。 单击时,它会显示combobox的箭头和选项,但在取消选择时,它看起来像一个常规单元格。 有办法解决这个问题吗?

JTable中的JComboBox

我在JTable的第3和第4列中有一个JComboBox,但我不知道如何获取它的项目…问题不是获取项目的方法,而是演员表 JComboBox combo=(JComboBox) jTable1.getColumnModel().getColumn(3).getCellEditor(); 你能帮我吗?

使JTable单元格编辑器值可选,但不可编辑?

我试图保持我的JTable的严密性和安全性,只通过isCellEditable()编辑可编辑的列。 但是,我的客户坚持要求他们双击单元格以便他们可以复制其内容,即使它是只读的。 我可以让单元格可以编辑,而不对它们在setValueAt()进行的任何编辑做任何事情(因此当编辑器退出时它会恢复为原始值)。 但我不希望这个应用程序感觉如此自由。 是否有一种简单有效的方法可以将JTextField用作单元格编辑器,以允许在编辑器中选择文本,但不可编辑? 我在下面的JTable上尝试了这个覆盖,但我认为我没有找到正确的“instanceof”对象。 @Override public TableCellEditor getDefaultEditor(Class columnClass) { if (super.getDefaultEditor(columnClass) instanceof JTextField) { JTextField jTextField = new JTextField(); jTextField.setEditable(false); return (TableCellEditor) jTextField; } if (columnClass == null) { return null; } else { Object editor = defaultEditorsByColumnClass.get(columnClass); if (editor != null) { return (TableCellEditor)editor; } else { return getDefaultEditor(columnClass.getSuperclass()); } } […]

使用TableCellEditor时,如何在鼠标单击位置获取组件?

我在表格单元格中使用自定义TableCellRenderer和多个JFormattedTextField 。 我使用与TableCellEditor相同的组件。 现在我需要知道用户单击的JFormattedTextField ,以及此字段中的位置(可以使用viewToModel完成)。 使用自定义TableCellEditor ,从鼠标单击中获取Point的唯一方法是CellEditor的isCellEditable(EventObject e)方法。 给出的Point在父坐标系中。 anEvent在调用组件坐标系中。 但是如何在单击的坐标上获取组件? 我尝试过使用findComponentAt(Point p)但它为我返回null 。 这是我测试过的一些代码: @Override public boolean isCellEditable(EventObject e) { if(e instanceof MouseEvent) { MouseEvent ev = (MouseEvent)e; Point p = ev.getPoint(); // gives strange values Point p3 = editor.getLocation(); // x: 0 y: 0 Point tp = ((JTable)e.getSource()).getLocation(); // these returns null Component […]