我有一个JTable
可编辑单元格。当我单击一个单元格时,它将进入编辑模式;当我使用方向箭头在单元格中移动时,也会发生同样的情况。现在,我想选择单元格而不是开始编辑,并且仅在Enter
按下键时才编辑单元格。
如果需要任何其他信息,请索取。
编辑:Enter
键的动作
class EnterAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
JTable tbl = (JTable) e.getSource();
tbl.editCellAt(tbl.getSelectedRow(), tbl.getSelectedColumn());
if (tbl.getEditorComponent() != null) {
tbl.getEditorComponent().requestFocus();
}
}
}
现在这是用于左箭头动作,不难从这一个推论出其余三个:
class LeftAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
JTable tbl = (JTable)e.getSource();
tbl.requestFocus();
tbl.changeSelection(tbl.getSelectedRow(), tbl.getSelectedColumn() > 0 ? tbl.getSelectedColumn()-1:tbl.getSelectedColumn(), false, false);
if(tbl.getCellEditor()!=null)
tbl.getCellEditor().stopCellEditing();
}
}
这是您绑定此操作的方式:
final String solve = "Solve";
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(enter, solve);
table.getActionMap().put(solve, new EnterAction());
final String sel = "Sel";
KeyStroke arrow = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0);
table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(arrow, sel);
table.getActionMap().put(sel, new LeftAction());
哦,我差点忘了,要选择单元格而不是在“鼠标单击”上进行编辑:
public static MouseListener mAdapterTable = new MouseListener()
{
@Override
public void mousePressed(MouseEvent e)
{
JTable tbl=((JTable)e.getComponent());
if(tbl.isEditing())
{
tbl.getCellEditor().stopCellEditing();
}
}
@Override
public void mouseClicked(MouseEvent e) {
JTable tbl=((JTable)e.getComponent());
if(tbl.isEditing() )
tbl.getCellEditor().stopCellEditing();
}
@Override
public void mouseReleased(MouseEvent e) {
JTable tbl=((JTable)e.getComponent());
if(tbl.isEditing() )
tbl.getCellEditor().stopCellEditing();
}
};
将EventListner
必须添加到表所示:
table.addMouseListener(mAdapterTable);
为此使用
键绑定
。大多数外观实现已经绑定F2
到表的startEditing
操作,但是您添加了一个不同的绑定:
tree.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "startEditing");
这将有效替换先前Enter
对表selectNextRowCell
操作的绑定。
问题内容: 我正在使用Nimbus L&F。我正在尝试通过使用以下代码来全局更改所有JTable的字体大小: 它正在工作,应用程序中所有JTable的行都使用新字体。我正在使用较大的字体大小,以使表在较大的分辨率下更具可读性。 但是问题是行高没有改变,导致字体被截断。我尝试了以下代码: 但这并没有改变显示表中的任何内容。 是否可以在不调用每个JTable实例的情况下全局更改行高? 问题答案: 基本
我添加了一个表,但问题是,面板没有显示其背景色。我试过设置滚动窗格的背景色等,但它不起作用。框架有一个按钮“验证”,单击该按钮时,在其下方显示一个表。在单击之前,表格将显示的部分为纯灰色。我希望整个部分是象牙背景。请帮我诊断这个问题。
问题内容: 我有一个3列的JTable。我已经为所有3列设置了这样的代码(也许不是很有效?)。 在一个随机的背景颜色为每一行返回一个组件。 程序运行时如何将背景更改为其他随机颜色? 问题答案: 一种方法是存储模型中每一行的当前颜色。这是一个固定在3列3行的简单模型: 注意通话; 这将导致仅更新表的该行。 渲染器可以从表中获取模型: 更改行的颜色很简单:
问题内容: 我已经建立了一个表,该表包含带有外键的列,并将其设置为(删除父级时删除子级) SQL命令将其更改为什么?(如果有孩子,则不能删除其父母) 问题答案: 旧问题,但添加了答案,以便获得帮助 它分为两个步骤: 假设,a 具有 列名称为, 约束条件 名称为的 外键 ,并通过键被引用到表中( 如下图所示 )。 第一步 ,删除旧的约束:(参考) 通知约束已删除,列未删除 第二步 ,添加新约束: 添
因此,我试图根据单元格的结果将jtable中的行的颜色更改为红色。请将此代码放在下面,应该可以工作,但注意更改 她是代码,如果有人能对它做一些修改,那就太好了,谢谢你
问题内容: 我目前正在为我的应用程序实现主题支持,其中一部分是更改操作栏应用程序图标。选择“ Holo Light”时,我想使用深色图标。除了设置动作栏应用程序图标的部分以外,其他所有操作均通过该方法完成。我要使用的代码是: 我得到的错误是“这里没有这样的参考”。应该如何正确完成? 顺便说一句,我是那么没有动作吧Sherlock的东西。 问题答案: 您将操作栏扔在那里。返回的实例,然后您需要调用该