- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现与此类似的键绑定(bind)主题( JTable Key Bindings )。我了解到它的键绑定(bind)绑定(bind)到表格而不是编辑器。
我的目标是编辑器上以 VK-ENTER 结尾的任何输入,它执行 pindah 操作(添加新行并设置光标在新行上闪烁)。抱歉,我没能从这个例子中学到东西。
有办法吗?
这是我的代码(不包括导入,因为 Eclipse 会自动建议它):
public class Fpos extends JFrame
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
Fpos frame = new Fpos();
frame.setVisible(true);
frame.setLocationRelativeTo(null); //make frame center of screen
} catch (Exception e) {e.printStackTrace();}
}
});
}
public Fpos()
{
//create Jpanel
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(10, 10, 1300, 700);
JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
//create label TOTAL
JLabel lblTotal = new JLabel("TOTAL : Rp.");
lblTotal.setFont(new Font("Wide Latin", Font.PLAIN, 30));
lblTotal.setBounds(33, 25, 312, 31);
contentPane.add(lblTotal);
//create label Total Amount
JLabel lblNewLabel = new JLabel("123,456,789");
lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
lblNewLabel.setFont(new Font("Wide Latin", Font.PLAIN, 60));
lblNewLabel.setBounds(583, 19, 659, 61);
contentPane.add(lblNewLabel);
//create jtable in scrollpane
String[] columnNames = {"PLU", "NAME", "UOM", "QTY", "PRICE","AMOUNT"};
Object[][] data = {{"", "", "", "", "", ""}};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model);
table.setFont(new Font("Tahoma", Font.PLAIN, 20));
table.setRowHeight(25);
JScrollPane sp=new JScrollPane(table);
sp.setBounds(25,100,1240,556);
contentPane.add(sp);
//set column width
TableColumnModel columnModel = table.getColumnModel();
short a[] = {150,540,50,150,150,200};
for(byte i=0;i<6;i++) { columnModel.getColumn(i).setPreferredWidth(a[i]); }
//render column format left alignment
for(byte i=0;i<3;i++) {table.getColumnModel().getColumn(i).setCellRenderer(new TextTableCellRenderer());}
//render column format ###,##0 right alignment
for(byte i=3;i<6;i++) {table.getColumnModel().getColumn(i).setCellRenderer(new NumberTableCellRenderer());}
//make cursor blinking on selected cell + select all cell value
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
table.changeSelection(0, 0, false, false);
if (table.editCellAt(0, 0))
{
Component editor = table.getEditorComponent();
editor.setFont(new Font("Tahoma", Font.PLAIN, 20));
editor.requestFocusInWindow();
((JTextComponent)editor).selectAll(); //select all cell value
//key binding
Action pindah = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
//add row at last row
model.addRow(data);
//i want to add new blank row but somehow there is value on column 0, so I have to set it blank. If you have a solution on this, you're very welcome
model.setValueAt("", model.getRowCount()-1, 0);
//make cursor blinking on selected cell + select all cell value
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
table.changeSelection(0, 0, false, false);
if (table.editCellAt(model.getRowCount()-1, 0))
{
Component editor = table.getEditorComponent();
editor.setFont(new Font("Tahoma", Font.PLAIN, 20));
editor.requestFocusInWindow();
((JTextComponent)editor).selectAll(); //select all cell value
}
}
});
}
};
((JComponent) editor).getInputMap().put(KeyStroke.getKeyStroke((char) KeyEvent.VK_ENTER), "pindah");
((JComponent) editor).getRootPane().getActionMap().put("pindah", pindah);
}
}
});
}
// render column format left alignment
public class TextTableCellRenderer extends DefaultTableCellRenderer
{public TextTableCellRenderer() {{setHorizontalAlignment(JLabel.LEFT);}} }
// render column format to ###,##0
public class NumberTableCellRenderer extends DefaultTableCellRenderer
{
public NumberTableCellRenderer() {setHorizontalAlignment(JLabel.RIGHT);}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
if (value instanceof Number) {value = NumberFormat.getNumberInstance().format(value);}
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
}
最佳答案
不是答案,而是关于您的代码的一些评论。
首先您需要了解事件调度线程 (EDT)。 GUI 组件的更新需要在 EDT 上完成。
通常,您不需要继续嵌套 SwingUtilities.invokeLater() 代码,因为您确实在 EDT 上创建了 GUI。
我们需要添加 invokeLater(...)
以使第一个单元格可编辑并使光标闪烁的原因是,如果框架不是,则无法将焦点设置在组件上可见的。因此,invokeLater(...)
允许我们将代码添加到 EDT 的末尾,以便它在 main() 方法中的 setVsible(...) 语句之后执行。
因此,如果您确实想使用按键绑定(bind),您只需在 Fpos 类的构造函数中设置所有按键绑定(bind)即可。
但是,我不知道满足当前要求的正确解决方案。
目前,ActionListener 已添加到用作单元格编辑器的 JTextField。当您按 Enter 键时,将调用监听器并调用表的停止单元格编辑逻辑
,这意味着编辑器中的值将添加到 TableModel 中,并且单元格编辑器将从表中删除.
因此,您不能简单地向编辑器添加键绑定(bind),因为您需要发生此默认行为。
我想您可以创建一个自定义单元格编辑器。然后在 ActionListener 中您可以添加您的附加要求。
关于java - JTable 编辑器中的键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47447780/
我想像 wordpress 的 css 管理器一样为我的网站制作 css 管理器。我想在 textarea 中打开 css 文件,这样我就可以编辑它,而不是在按下提交按钮后,应该保存 css 文件中的
我不知道这是一个有效的问题。我见过大多数插件和对话框定义的 CKEditor 示例都使用变量“editor”。我想知道它是什么以及它的值来自哪里。 例如 CKEDITOR.plugins.add( '
前言 今天大姚给大家分享一个基于 Roslyn 和 AvalonEdit 开源、轻量、跨平台的 C# 编辑器:RoslynPad。 Roslyn介绍 Roslyn是一个强大的.NET编译器实现,
如果你希望极认真地学习和使用 XML,那么一定想要找一款称手的 XML 编辑器 XML 是基于文本的 XML是基于文本的标记语言 XML可被类似记事本这样的简单的文本编辑器来创建和编辑 不过在
有没有人成功地将 Summernote 编辑器与 Meteor 一起使用? 见 http://hackerwins.github.io/summernote/ 我在我的模板中包含了以下 div:
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
如何使文本默认从右向左对齐(p:editor)。 当前使用 primefaces 3.0.M2-SNAPSHOT。现在无法更新到新版本吗? 这是阿拉伯语版本应用程序所必需的。 谢谢 最佳答案 在 we
如何启动或安装 Eclipse XSD 编辑器? 根据this看来它应该开箱即用。我创建了 XMLExamples 项目,当我打开 Catalogue.xsd 时,Eclipse 将其视为文本文件。如
我爱wysihtml5但我找不到任何关于向元素添加类这样简单的文档。 基本上我正在寻找的是一种允许 blockquote 元素有 2 种不同变体的方法: blockquote.pull-leftblo
我真的很想要一个在 Django 中实现文本编辑器的清晰直接的示例,就像提议的 pagedown 或 markdownx 一样。我无法在 Django 2.0 中使用这些解决方案中的任何一个,并且我找
是否有支持 REPL 和大括号匹配的 ClojureCLR 编辑器?我找到了一个将对 ClojureCLR 的支持添加到 Visual Studio 的项目:vsClojure ,但无法构建它。还有其
GWT 的编辑器框架非常好用,它不仅可以用于编辑POJO,还可以用于只读显示。 但是,我并不完全确定进行内联编辑的最佳做法是什么。 假设我有一个 PersonProxy 并且我有一对 Presente
我对 primefaces 编辑器的第一个问题是它不接受来自 Chrome 和资源管理器中的 MS word 文档的文本,但在 Firefox 中工作正常。有没有办法让它直接接受来自 MS word
我使用 Prototype JS 作为主要 JS 库,并且我已将最后一个 RedactorJS 与 jQuery 以无冲突模式集成,但我无法启动如下功能: jQuery('#redactor').re
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
我正在 Laravel 项目上使用 redactor 作为文本编辑器。 每当编辑器位于页面上并初始化时,每当我单击任意位置时都会收到此错误。 Uncaught TypeError: $(...).cl
我在带有 jQuery .show("slide") 动画的界面设计中使用tinyMCE 时遇到问题。由于表单的复杂性,它像向导一样被分为多个页面,但它不使用下一步和后退按钮。相反,它使用部分名称
如何制作像 wufoo.com 表单编辑器中那样的拖放式编辑器 最佳答案 通常客户端应用程序是使用某种客户端框架构建的。比较流行的是(排名不分先后): GWT YUI jQuery 首先检查这些内容,
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
有人建议我使用具有语法错误检查和调试功能的 Javascript 编辑器吗? Eclipse IDE 有可用的插件吗?或者您可以建议最适合错误检查和调试的任何编辑器。 提前致谢。 最佳答案 您可以安装
我是一名优秀的程序员,十分优秀!