我在java中做了一个计算器,很容易,不要把文档过滤器放在jtext字段中。我选择了使jtext field不可编辑,并添加了一个按键侦听器,但是当你按下删除按钮时,它会发出错误的声音。
下面是一个简单的例子:如果你按下文本字段中的delete键,它会发出声音:
public Example() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBounds(0, 0,250,200);
setLayout(null);
javax.swing.JTextField jTextField1 = new javax.swing.JTextField();
jTextField1.setEditable(false);
jTextField1.setBounds(30,50,180,60);
add(jTextField1);
}
public static void main(String args[]) {
Example a = new Example();
a.setVisible(true);
}
}
在这段代码中,文本字段是不可编辑的,在下一段代码中,文本字段将不会发出声音:
public Example() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBounds(0, 0,250,200);
setLayout(null);
javax.swing.JTextField jTextField1 = new javax.swing.JTextField();
jTextField1.setEditable(true);
jTextField1.setBounds(30,50,180,60);
add(jTextField1);
}
public static void main(String args[]) {
Example a = new Example();
a.setVisible(true);
}
}
这是因为文本字段是可编辑的。
如果你能帮助我,告诉我如何修复它,或者如何改变系统的代码,或者任何你认为可以帮助我的事情,我将不胜感激。
即使JTextField是可编辑的,按下del键也会发出声音,这取决于操作系统对按下键的响应。解决这一问题的方法是防止del键注册它已被按下,而实现这一点的方法是使用键绑定使del键在GUI中不引起响应——在文本字段有焦点时,对del键被按下做出不做任何动作的响应。例如:
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
@SuppressWarnings("serial")
public class Example extends JFrame {
public Example() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
// setBounds(0, 0,250,200);
// setLayout(null);
JPanel panel = new JPanel();
int gap = 40;
panel.setBorder(BorderFactory.createEmptyBorder(gap, gap, gap, gap));
JTextField jTextField1 = new JTextField(20);
jTextField1.setEditable(false);
panel.add(jTextField1);
// get input and action maps to do key binding
InputMap inputMap = jTextField1.getInputMap(JComponent.WHEN_FOCUSED);
ActionMap actionMap = jTextField1.getActionMap();
// the key stroke that we want to change bindings on: delete key
KeyStroke delKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0);
// tell the input map to map the key stroke to a String of our choosing
inputMap.put(delKeyStroke, delKeyStroke.toString());
// map this same key String to an action that does **nothing**
actionMap.put(delKeyStroke.toString(), new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
// do nothing
}
});
add(panel);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(() -> {
Example example = new Example();
example.pack();
example.setLocationRelativeTo(null);
example.setVisible(true);
});
}
}
附带建议:
< br >我有这段代码,其中我设计了一个< code >可编辑的JComboBox来侦听我的< code>keyPressed事件,并显示一条消息,说明键已被按下。但我不知道为什么这没用。作为初学者,我可能在逻辑上/概念上犯了错误。 因此,我想征求关于如何构建代码的建议,以使其工作。 密码
在index.hpp中,我创建了一个具有多个数据成员的类,如、等。我在类外部定义了一个构造函数。在program.cpp中,我创建了一个名为SAM的对象。当我试图编译它时,它显示错误。什么原因? Program.cpp index.hpp 错误信息
如果我按下呼叫按钮,我会得到一个错误,即出租车没有呼叫,而是转到另一个窗口。 我认为这个错误来自实时数据库。如果你有不同的意见,写下你的答案。 错误:E/AndroidRuntime:致命异常:主进程:com。实例乌兹别克斯坦,PID:8915爪哇。lang.NullPointerException:尝试调用虚拟方法“double android”。地方地方getLatitude()'位于com上
问题内容: 我正在尝试模拟输入到中的文本。我有一个1字符长的字符串,其中包含要添加的字母,然后运行: 但这似乎并没有改变任何内容。我在这里想念什么? 问题答案: 在我看来就像是虚拟键盘:-) 几乎完全相同的代码对我有用。我建议以下内容: 将目标(在您的情况下为)作为参数传递给构造函数,即: 确保目标有重点。 编辑: 为了验证以上建议,我测试了以下代码段: 这是行不通的,但是,如果对最后一行进行如下
有没有办法更改不可编辑JTextField的样式?如果文本字段设置为editable=false,我们希望文本字段的背景颜色略为灰色。我想其中一种方法就是 在每个组件上,但这似乎容易出错且乏味。 我想要实现的是:正常的JTextfiel应该按照nimbus外观和感觉的定义显示。只读字段(例如editable=false)应具有不同的背景色。禁用字段应按照nimbus LAF的定义显示。 我在Nim
当选中复选框在第二个文本域上设置启用(false)并按回车键时,需要将焦点放在第三个文本域 ,如果没有选中任何复选框,则按回车键可以将焦点放在文本域上作为流。我应该添加任何代码或如何使其工作 我的GUI: