Java JTextField焦点问题
我想知道是否可以使用打印初始化文本字段(这部分我知道怎么做),然后突出显示打印,然后在用户开始键入时消失?即使没有突出显示,您如何让字段初始化为“请输入您的电话号码”,然后使其消失,这样用户就不必删除文本?Java JTextField焦点问题,java,swing,Java,Swing,我想知道是否可以使用打印初始化文本字段(这部分我知道怎么做),然后突出显示打印,然后在用户开始键入时消失?即使没有突出显示,您如何让字段初始化为“请输入您的电话号码”,然后使其消失,这样用户就不必删除文本? 用一些已知的文本初始化jtextfield实例,如“请输入您的电话号码” 实施 在focusgound()中,检查JTextField实例是否具有已知文本,以及是否清除了文本;如果没有,什么也不做 这是一个代码示例 final String INITIAL_TEXT = "Plea
- 用一些已知的文本初始化
实例,如“请输入您的电话号码”jtextfield
- 实施
- 在focusgound()中,检查JTextField实例是否具有已知文本,以及是否清除了文本;如果没有,什么也不做
final String INITIAL_TEXT = "Please enter your ph. number";
final JTextField textField = new JTextField(INITIAL_TEXT);
textField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (textField.getText().equals(INITIAL_TEXT)) {
textField.setText("");
}
}
@Override
public void focusLost(FocusEvent e) {
}
});
还有另一种方法,FocusGain事件。 只需标记初始文本:
String initialText = "Enter your story here...";
...
jTextArea1.setText(initialText);
...
private void focusGained(java.awt.event.FocusEvent evt) {
if (jTextArea1.getText().equals(initialText)) {
//jTextArea1.setSelectionStart(0);
//jTextArea1.setSelectionEnd(jTextArea1.getText().length());
jTextArea1.selectAll();
}
}
这样,每当用户在jTextArea1中键入内容时,就会立即替换初始文本 在
focusLost
中,如果用户没有输入任何内容,则将初始文本放回原处是一种很好的可用性。像这样:
public void focusLost(FocusEvent e)
{
// If the field is empty, set the default text when losing focus.
if (inputField.getText().isEmpty())
{
inputField.setText(INITIAL_TEXT);
}
}
或者,如果您不想使用focusLost
方法,您可以创建一个扩展FocusAdapter
的内部类MyFocusListener
,这样您只需要实现想要使用的方法
private class MyFocusListener extends FocusAdapter
{
public void focusGained(FocusEvent e)
{
// do your magic!
}
// ignore the focusLost method
}
public boolean isCorrect(){
数据=新字符串[6];
对于(int i=0;i
天哪。非常感谢。对不起,@override是什么?它是一个注释。这是它的文档。嗯……我正试图编写一个程序,在文本字段中获取一个名称,实际上,当我失去焦点而字段中没有名称时,我应该提示输入一个名称。现在,当我按照上面的建议操作时,我的组合框中的功能将丢失(但是我的JList和我的复选框一样仍然有效)。这有什么用?我为我的焦点丢失编写了以下代码:public void focusLost(FocusEvent e){if(e.getSource()==gui.regPanel.regTextField&&gui.regPanel.regTextField.getText().trim().equals(“”){gui.regPanel.regTextField.setText(错误文本);gui.regPanel.regTextField.requestFocusInWindow();}}@单位:别忘了给shadowfoxmi的帖子投票,如果你觉得它代表了原始问题的答案,那么就接受它。无论你是否接受,他都应该获得投票权,这仅仅是因为他为帮助你所付出的努力。或者只是在JTextArea上调用selectAll(),而不是设置selection start和end.Thanx!selectAll()更好。实际上,我最终还是接受了Costis的建议。工作起来很有魅力。谢谢现在要找出最后两个bug,那么我就完成了。在本例中,适配器并没有给您带来太多好处,因为它只有两个方法,但适配器模式适用于大多数侦听器接口。特别是MouseAdapter非常有用,因为它同时实现了MouseListener和MouseWheelListener,并且您只实现了所有鼠标操作中您喜欢的方法(有很多)
public boolean isCorrect() {
data = new String[6];
for (int i = 0; i < informationLabel.length; i++) {
if (i == 0) {
if (!informationTextField[i].getText().equals("")) {
data[i] = informationTextField[i].getText();
}
else
return false;
}
if (i == 1 || i == 2) {
if (informationPasswordField[i - 1].getText().equals(""))
return false;
}
if (i == 3 || i == 4 || i == 5 || i == 6) {
if (!informationTextField[i - 2].getText().equals("")) {
data[i - 1] = informationTextField[i - 2].getText();
}
else
return false;
}
}
return true;
}