java - java swing中的按钮有问题
问题描述
问候!我有一个问题,它是 java,我做了一个 gui 键盘(类似于计算器)和两个文本字段。现在我不知道如何使用键盘上的相同键根据需要输入不同的文本字段(不要同时输入两个文本字段)?谢谢
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String s = jTCena.getText();
jTCena.setText(s+"1");
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
String s = jTCena.getText();
jTCena.setText(s+"2");
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
String s = jTCena.getText();
jTCena.setText(s+"3");
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
String s = jTCena.getText();
jTCena.setText(s+"4");
}
解决方案
我不知道如何使用键盘上的相同键根据需要输入不同的文本字段
您可以定义一个自定义TextAction
并将其添加到您的按钮。
允许您跟踪最后一个具有焦点的TextAction
文本组件(在您单击按钮之前)。
就像是:
class KeyboardAction extends TextAction
{
private String letter;
public KeyboardAction(String letter)
{
super(letter);
this.letter = letter;
}
public void actionPerformed(ActionEvent e)
{
JTextComponent component = getFocusedComponent();
component.setCaretPosition( component.getDocument().getLength() );
component.replaceSelection( letter );
}
}
然后,您可以使用以下类:
jButton1 = new JButton( new KeyboardAction("1") );
jButton2 = new JButton( new KeyboardAction("2") );
或者您使用以下方法将操作添加到现有按钮:
button.setAction( new KeyboardAction("1") );
推荐阅读
- arrays - 按数组聚合组并将数量除以数组长度
- angular - 我如何需要为 ngxs selectSnapshot 调用字符串重载?
- python - 在 Beaglebone Black 上读取 I2C 字节
- typescript - 如何使用 typeScript 启动 selenium web-driver?
- r - R Studio - 合并文件并写入中央文件 - 重复问题
- javascript - 有没有办法从项目中删除所有的mutationObservers而不参考它?
- python - 使用 fipy 的 Python pde 解决方案给出值错误
- android-studio-3.6 - 如何在 android studio 3.6 中切换密码可见性
- c - 为什么 C 中结构的内存分配适用于 malloc 的任何值?
- scala - 使用 spark 结构化流解除阻塞 API 调用