public void keyPressed(KeyEvent ke) {
if(ke.getKeyCode() == KeyEvent.VK_ENTER)
sendButton.???
else if(ke.getKeyCode() == KeyEvent.VK_ALT + KeyEvent.VK_ENTER)
inputTextArea.setText(inputTextArea.getText() + "\n");
}
在这一点上我应该做什么->???
还有什么有用的建议,教我,让我的程序发展:)
不要将KeyListener
与文本组件一起使用,这通常是不好的做法,相反,您希望控制KeyEvent.vk_enter
键绑定操作,并在其中插入您的自定义功能...
现在,诀窍是,让现有的操作
仍然工作,因为您不想要更多的工作,然后需要...
这可以通过获取与keyevent.vk_enter
关联的操作
来实现...
InputMap im = ta.getInputMap(JTextArea.WHEN_FOCUSED);
ActionMap am = ta.getActionMap();
Object key = im.get(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
Action insertBreak = am.get(key);
am.put(key, new MyNewOnEnterAction(insertBreak));
//...
public class MyNewOnEnterAction extends AbstractAction {
private Action proxy;
public MyNewOnEnterAction(Action proxy) {
this.proxy = proxy;
}
@Override
public void actionPerformed(ActionEvent e) {
// Your custom functionality here...
proxy.actionPerformed(e);
}
}
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.swing.text.JTextComponent;
public class Test {
public static void main(String[] args) {
new Test();
}
private JLabel status;
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JTextArea ta = new JTextArea(10, 10);
InputMap im = ta.getInputMap(JTextArea.WHEN_FOCUSED);
ActionMap am = ta.getActionMap();
Object key = im.get(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
Action insertBreak = am.get(key);
am.put(key, new MyNewOnEnterAction(insertBreak));
status = new JLabel("...");
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(ta));
frame.add(status, BorderLayout.SOUTH);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public void sendMessage(String message) {
}
public class MyNewOnEnterAction extends AbstractAction {
private Action proxy;
public MyNewOnEnterAction(Action proxy) {
this.proxy = proxy;
}
public int getLineAtCaret(JTextComponent component) {
int caretPosition = component.getCaretPosition();
Element root = component.getDocument().getDefaultRootElement();
return root.getElementIndex(caretPosition) + 1;
}
@Override
public void actionPerformed(ActionEvent e) {
JTextArea ta = (JTextArea) e.getSource();
int line = getLineAtCaret(ta);
try {
int startPos = ta.getLineStartOffset(line - 1);
int endPos = ta.getLineEndOffset(line - 1);
Document doc = ta.getDocument();
String text = doc.getText(startPos, endPos - startPos);
status.setText(text);
} catch (BadLocationException ex) {
ex.printStackTrace();
}
proxy.actionPerformed(e);
}
}
}
问题内容: 您好,我正在命令行应用程序上工作,它可以接受命令行参数,例如 我正在寻找可以返回我对选项及其对应值的函数,例如c中的getopt。 问题答案: 那里有很多针对Java的命令行解析器库。 picocli是最近(截至2019年末)具有许多功能和特性的命令行解析器。 一些较老的流行类是commons- cli (相当古老),args4j和JCommander。
问题内容: 有没有像MySQL中的任何功能和像甲骨文和其他DBMS提供的? 我想在查询中生成一个ID,但是在MySQL中这些功能不存在。还有其他选择吗? 问题答案: Mysql没有它们,但是您可以使用使用用户定义的变量的以下表达式进行模拟: 像这样: 但是如果您要重用该会话,它将仍然被设置,因此您需要像这样重置它: 参见SQLFiddle。 可能,但是火车残骸;我建议在应用程序层处理该要求。
问题内容: 我想将其中一列中的数据转换为另一种语言… sql中是否有用于翻译它的函数? 问题答案: 不,没有SQL函数/过程可在Oracle数据库内置的语言之间进行转换。 Oracle Text具有用于多语言索引的功能;但这是用于索引文档而不是翻译它们。 Oracle 12c和更高版本还具有在不同SQL方言之间进行转换的功能;但这不是翻译数据。 如果要转换数据,则需要可以导入数据库或可以从数据库调
问题内容: 我是Java的初学者,一直在研究如何检测用户是否按下了某个键(例如箭头键)。显然,有很多方法可以做到这一点,我发现此方法应该对我有用: 问题是我不知道什么是KeyEvent。 当我调用该方法并给我举个例子时,谁能告诉我在括号中加什么? PS:不要把我发送到其他站点,我可能已经看过了,他们只是让我更加困惑… 问题答案: public class KeyEvent extends Inpu
问题内容: 最近,我遇到了有关javajava的博客文章http://java.dzone.com/articles/how-changing-java- package,其中 介绍了按功能打包Java代码。 我喜欢这个主意,但是对于这种方法我没什么疑问。我问了我一个问题,但没有得到满意的答复。我希望StackOverflow上的人可以澄清我的问题。 我喜欢按功能打包的想法,它极大地减少了在编码时
问题内容: 在Java中,我有一个程序需要连续检查用户是否按下了键。所以在伪代码中,像 提前致谢! 问题答案: 在Java中,你不检查是否有键被按下,而不是你听到秒。实现目标的正确方法是注册一个,并实现它以维持所需密钥的状态: 然后,您可以随时使用: 当然,您可以使用相同的方法来实现键映射及其包裹在状态中的状态。