标签: tablecelleditor

如何在按下单独的JBtton时停止使用DefaultCellEditor进行编辑

我得到了一个带有自定义TableCellEditor(扩展DefaultCellEditor)的表,其中JFormattedTextField作为编辑器组件.

现在我遇到了问题:当我在编辑时按下一个单独的按钮.当按下按钮时,编辑器保持"打开并激活",同时我希望它停止编辑,以便所做的更改可用于按钮引起的操作.

因此,当按下一个不同的按钮时,如何使编辑停止.我为JFormattedTextField尝试了setFocusLostBehavior(JFormattedTextField.COMMIT),但它似乎没有效果.

希望有人有一些好主意=)

java swing focus jtable tablecelleditor

5
推荐指数
1
解决办法
3446
查看次数

使JTable单元格可编辑 - 但*不*通过双击

我正在尝试JTable使用以下行为向a添加列(类似于Windows资源管理器和类似的shell):

  • 像往常一样,可以单击一次单元格以选择它.
  • 可以双击单元格以执行单独的操作(启动外部程序.)
  • 单元格值(字符串)仍然可以通过单击第二次(暂停后)或按下F2单元格突出显示时进行编辑.

双击不得触发单元格的编辑,但如果可能,我希望保留任何其他默认编辑触发器.

我曾尝试添加一个MouseListener表,并消耗所有MouseEventS,但这并不工作-如果我回到trueisCellEditable()那么我的听众从来没有收到任何点击事件,但如果我回到false然后F2不再起作用.

这可以仅使用事件监听器来实现吗?如果我可以避免它,我宁愿不搞乱PLAF功能.

java swing jtable tablecelleditor

5
推荐指数
1
解决办法
1万
查看次数

如何让JTable停留在已编辑的单元格上

如果有人编辑JTable的单元格内容并按Enter键,则会修改内容并将表格选择移动到下一行.

是否可以禁止JTable在单元格版本之后进入下一行

原因是我的程序使用ListSelectionListener在单元格选择上同步其他一些小部件,我不希望在编辑当前单元格后选择下一行.

java swing jtable tablecelleditor

5
推荐指数
1
解决办法
1160
查看次数

JTable Nimbus外观 - 如何清楚哪个单元格具有焦点

当在JTable(Nimbus L&F)中编辑数据时,当用户从一个单元格切换到另一个单元格时,不清楚哪个单元格具有焦点.如何更清楚地说明哪个细胞有焦点?我知道有很多属性可以设置来修改Nimbus - 有谁知道我想要哪个属性?

下面的屏幕截图只有一个属性设置为默认值以外的其他属性:

UIManager.put("Table.showGrid", true);
Run Code Online (Sandbox Code Playgroud)

JTable屏幕截图

java swing jtable tablecelleditor nimbus

5
推荐指数
1
解决办法
2949
查看次数

Java JTable 如何在按下回车键时将焦点从编辑模式下的当前单元格转移到下一个单元格

让我介绍一下我的问题的场景。我希望在 JTable 中呈现数据库表的内容。有了这个 JTable,我应该能够插入新行、删除行以及更新现有行的字段内容。

\n\n

第一个期望的行为是,当单元格获得焦点时,如果它是可编辑的,则它会直接进入编辑模式,并且如果它是字母数字内容,则选择所有内容。(文本、数字、日期等)

\n\n

下一个期望的行为是Enter按键作为按键工作Tab,即,按下Enter按键焦点必须向前(从左到右)或向后转移到下一个单元格(如果这是可编辑的,则进入编辑模式)。

\n\n

为了满足第一个要求,我使用以下方法覆盖 JTable 类的changeSelection 方法。

\n\n
@Override\npublic void changeSelection(int row, int column, boolean toggle, boolean extend) {\n    super.changeSelection(row, column, toggle, extend);\n    if (editCellAt(row, column)) {\n        Component editor = getEditorComponent();\n        editor.requestFocusInWindow();\n        if (editor instanceof JFormattedTextField) {\n            ((JFormattedTextField) editor).select(0,\n                    ((JFormattedTextField) editor).getText().length());\n        } else if (editor instanceof JTextField) {\n            ((JTextField) editor).selectAll();\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在阅读了大量文档和帖子后,很明显解决问题的最合适方法是通过使用键绑定,基本上,读完之后,解决方案是将键的行为分配给TabEnter,我也这么做了。

\n\n
private void tableConfiguration() {\n    //Configuramos la tabla para que …
Run Code Online (Sandbox Code Playgroud)

java swing jtable key-bindings tablecelleditor

5
推荐指数
1
解决办法
2707
查看次数

像JTable单元格编辑器一样使用JSpinner

我正在使用JSpinner像表格单元格编辑器,我有一个恼人的问题:

单元格保持不可编辑模式,直到我点击它,因为不可编辑我的意思是我无法写入它(它没有焦点因此它不接受输入键盘)但我可以改变值 - 向下箭头(键盘).

那么,当我选择一个按键时,我必须做什么来集中我的表格?

除了那个问题,我的SpinnerEditor类运行得很好.

谢谢大家.

java swing focus jspinner tablecelleditor

4
推荐指数
1
解决办法
7731
查看次数

如何在cellchange上执行JTable选择所有文本

我已经看到了这样做的一些例子,但我仍然无法理解,也无法实现它.

我想做的是在细胞更换(焦点),下一个选定的单元格将选择所有文本,准备用户完全更改它..

关于如何做的任何想法?

//更新//不知怎的,我设法出来了下面的课但是

实现这个
tblLayers.setDefaultEditor(String.class,new Classes.CellEditor());

没有产生任何结果,"尚未支持".不被抛出..

我该如何解决这个问题?

import java.awt.Component;
import java.util.EventObject;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.CellEditorListener;
import javax.swing.table.TableCellEditor;


public class CellEditor extends JTextField implements TableCellEditor {


public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    //        final JTextField ec = (JTextField) editorComponent;
    //
    //        ec.setText((String) value);
    //
    //        // selectAll, so that whatever the user types replaces what we just put there
    //        ec.selectAll();
    //
    //        SwingUtilities.invokeLater(new Runnable() {
    //
    // …
Run Code Online (Sandbox Code Playgroud)

java swing select jtable tablecelleditor

4
推荐指数
2
解决办法
4802
查看次数

使用编辑器验证表的单元格

我的JTable有一个密码字段编辑器.我想在用户单击编辑另一个字段时,如果文本长度小于8位,则显示错误消息.我尝试过焦点听众.但它不起作用.请帮帮我,因为我刚刚开始使用java swing.

class PasswordEditor extends DefaultCellEditor 
{

    TextBox m_passWord = new TextBox(); 
    public PasswordEditor() {
        super(new TextBox());
    }

    @Override
    public Object getCellEditorValue() {

        return this.m_passWord.getText();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
            Object value, boolean isSelected, int row, int column) {

        Object fieldValue = value;
        if(null == fieldValue)
            fieldValue = Constants.EMPTY_STRING;

        this.m_passWord.addInputMethodListener(new InputMethodListener() {

            @Override
            public void inputMethodTextChanged(InputMethodEvent event)
            {
                // TODO Auto-generated method stub

            }

            @Override
            public void caretPositionChanged(InputMethodEvent event)
            {
                // TODO Auto-generated method stub

            }
        })
        this.m_passWord.addFocusListener(new FocusListener() …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecelleditor jpasswordfield

4
推荐指数
2
解决办法
5201
查看次数

JTable中的JComboBox

我在JTable的第3和第4列中有一个JComboBox,但我不知道如何获取它的项目...问题不是获取项目的方法,而是演员表

JComboBox combo=(JComboBox) jTable1.getColumnModel().getColumn(3).getCellEditor();
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

java swing jtable tablecelleditor jcombobox

4
推荐指数
1
解决办法
3450
查看次数

删除对可编辑jtable单元格的关注

双击jtable的可编辑单元格时,如此处显示.

跟随

我需要的是如果用户在输入值之前按下鼠标在按钮之外,则应自动输入现有值,输出应如下所示.

后

任何帮助或建议将不胜感激.

java user-interface swing jtable tablecelleditor

3
推荐指数
1
解决办法
5515
查看次数