我得到了一个带有自定义TableCellEditor(扩展DefaultCellEditor)的表,其中JFormattedTextField作为编辑器组件.
现在我遇到了问题:当我在编辑时按下一个单独的按钮.当按下按钮时,编辑器保持"打开并激活",同时我希望它停止编辑,以便所做的更改可用于按钮引起的操作.
因此,当按下一个不同的按钮时,如何使编辑停止.我为JFormattedTextField尝试了setFocusLostBehavior(JFormattedTextField.COMMIT),但它似乎没有效果.
希望有人有一些好主意=)
我正在尝试JTable使用以下行为向a添加列(类似于Windows资源管理器和类似的shell):
双击不得触发单元格的编辑,但如果可能,我希望保留任何其他默认编辑触发器.
我曾尝试添加一个MouseListener表,并消耗所有MouseEventS,但这并不工作-如果我回到true从isCellEditable()那么我的听众从来没有收到任何点击事件,但如果我回到false然后F2不再起作用.
这可以仅使用事件监听器来实现吗?如果我可以避免它,我宁愿不搞乱PLAF功能.
如果有人编辑JTable的单元格内容并按Enter键,则会修改内容并将表格选择移动到下一行.
是否可以禁止JTable在单元格版本之后进入下一行?
原因是我的程序使用ListSelectionListener在单元格选择上同步其他一些小部件,我不希望在编辑当前单元格后选择下一行.
当在JTable(Nimbus L&F)中编辑数据时,当用户从一个单元格切换到另一个单元格时,不清楚哪个单元格具有焦点.如何更清楚地说明哪个细胞有焦点?我知道有很多属性可以设置来修改Nimbus - 有谁知道我想要哪个属性?
下面的屏幕截图只有一个属性设置为默认值以外的其他属性:
UIManager.put("Table.showGrid", true);
Run Code Online (Sandbox Code Playgroud)

让我介绍一下我的问题的场景。我希望在 JTable 中呈现数据库表的内容。有了这个 JTable,我应该能够插入新行、删除行以及更新现有行的字段内容。
\n\n第一个期望的行为是,当单元格获得焦点时,如果它是可编辑的,则它会直接进入编辑模式,并且如果它是字母数字内容,则选择所有内容。(文本、数字、日期等)
\n\n下一个期望的行为是Enter按键作为按键工作Tab,即,按下Enter按键焦点必须向前(从左到右)或向后转移到下一个单元格(如果这是可编辑的,则进入编辑模式)。
为了满足第一个要求,我使用以下方法覆盖 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}\nRun Code Online (Sandbox Code Playgroud)\n\n在阅读了大量文档和帖子后,很明显解决问题的最合适方法是通过使用键绑定,基本上,读完之后,解决方案是将键的行为分配给Tab键Enter,我也这么做了。
private void tableConfiguration() {\n //Configuramos la tabla para que …Run Code Online (Sandbox Code Playgroud) 我正在使用JSpinner像表格单元格编辑器,我有一个恼人的问题:
单元格保持不可编辑模式,直到我点击它,因为不可编辑我的意思是我无法写入它(它没有焦点因此它不接受输入键盘)但我可以改变值 - 向下箭头(键盘).
那么,当我选择一个按键时,我必须做什么来集中我的表格?
除了那个问题,我的SpinnerEditor类运行得很好.
谢谢大家.
我已经看到了这样做的一些例子,但我仍然无法理解,也无法实现它.
我想做的是在细胞更换(焦点),下一个选定的单元格将选择所有文本,准备用户完全更改它..
关于如何做的任何想法?
//更新//不知怎的,我设法出来了下面的课但是
实现这个
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) 我的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) 我在JTable的第3和第4列中有一个JComboBox,但我不知道如何获取它的项目...问题不是获取项目的方法,而是演员表
JComboBox combo=(JComboBox) jTable1.getColumnModel().getColumn(3).getCellEditor();
Run Code Online (Sandbox Code Playgroud)
你能帮我吗?
双击jtable的可编辑单元格时,如此处显示.

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

任何帮助或建议将不胜感激.
java ×10
swing ×10
tablecelleditor ×10
jtable ×9
focus ×2
jcombobox ×1
jspinner ×1
key-bindings ×1
nimbus ×1
select ×1