以Java为中心的JTextField

以Java为中心的JTextField,java,swing,focus,actionlistener,jtextfield,Java,Swing,Focus,Actionlistener,Jtextfield,我目前有一个JTextField,其中有默认文本。 我目前的问题是让JTextField拥有一个工作的ActionListener。我已经向组件添加了一个动作侦听器,但是当我使用FocusListener检查焦点时,它不会给出任何输出/回复 任何帮助都将不胜感激。请提供一些我应该更改的示例代码,谢谢 另外,我将这个类用作另一个类的组件,因此在另一个类中我写道: SmartText.java 您尚未将FocusListener添加到该字段 // You need to implement the

我目前有一个
JTextField
,其中有默认文本。 我目前的问题是让
JTextField
拥有一个工作的
ActionListener
。我已经向组件添加了一个动作侦听器,但是当我使用
FocusListener
检查焦点时,它不会给出任何输出/回复

任何帮助都将不胜感激。请提供一些我应该更改的示例代码,谢谢

另外,我将这个类用作另一个类的组件,因此在另一个类中我写道:

SmartText.java
您尚未将
FocusListener
添加到该字段

// You need to implement the FocusListener interface
public class SmartText extends JTextField implements FocusListener {
    private static final long serialVersionUID = 1L;

    JTextField textField = new JTextField();

    String defaultText;

    boolean hasDefaultText;

    public SmartText() {
        super();
        hasDefaultText = false;
        notFocused();
        // Then register yourself as interested in focus events
        addFocusListener(this);
    }

    public SmartText(String defaultText) {
        super(defaultText);
        this.defaultText = defaultText;
        hasDefaultText = true;
        notFocused();
        // Then register yourself as interested in focus events
        addFocusListener(this);
    }

    // Then implement the contract of the FocusListener interface
    public void focusGained(FocusEvent e) {
    }

    public void focusLost(FocusEvent e) {
    }
请通读以了解更多详细信息


从代码的外观看,尝试添加“提示支持”到字段中,可以考虑从SWIGLANS、SWIXX库中使用<代码> PROPTIONS/<代码>,对于

< P>可以使用单一类.< /P>

与CopyListListor接口一起工作,以便监听键盘获得或丢失焦点,需要使用组件的addFocusListener()方法向组件注册从类创建的侦听器对象。两种重要的方法focusgound(FocusEvent e)和void focusLost(FocusEvent e),有助于找到聚焦的组件


请通读,并通过适当的示例了解更多细节

我怎样才能做到?(请提供代码)编辑:但我确实有一个focusgound(){}字段,所以这不应该工作吗???啊!非常感谢!7分钟后,我将再次投票、欢呼和感谢。@user3640377也许您应该先花些时间阅读教程,它们可能会回答您将来更多的问题;)是的,有了PromptSupport,我实际上正在尝试创建一个包含大量类的库,所以这有点像是从SwingX中重新创建了一些东西(虽然直到现在才真正听说过),再次感谢。要更快地获得更好的帮助,请发布一个(最简单的完整且可验证的示例)。
package com.finn.multiweb;

import java.awt.Color;

import javax.swing.JTextField;

public class SmartText extends JTextField {
    private static final long serialVersionUID = 1L;

    JTextField textField = new JTextField();

    String defaultText;

    boolean hasDefaultText;

    public SmartText() {
        super();
        hasDefaultText = false;
        notFocused();
    }

    public SmartText(String defaultText) {
        super(defaultText);
        this.defaultText = defaultText;
        hasDefaultText = true;
        notFocused();
    }

    private void notFocused() {
        super.setForeground(Color.GRAY);
        if (hasDefaultText == true) {
            super.setText(defaultText);
        } else if (hasDefaultText == false) {
            super.setText("");
        }
    }

    private void isFocused() {
        super.setForeground(Color.BLACK);
        super.setText("");
    }

    private void focusGained(java.awt.event.FocusEvent evt) {
            System.out.println("test");
        }
}
// You need to implement the FocusListener interface
public class SmartText extends JTextField implements FocusListener {
    private static final long serialVersionUID = 1L;

    JTextField textField = new JTextField();

    String defaultText;

    boolean hasDefaultText;

    public SmartText() {
        super();
        hasDefaultText = false;
        notFocused();
        // Then register yourself as interested in focus events
        addFocusListener(this);
    }

    public SmartText(String defaultText) {
        super(defaultText);
        this.defaultText = defaultText;
        hasDefaultText = true;
        notFocused();
        // Then register yourself as interested in focus events
        addFocusListener(this);
    }

    // Then implement the contract of the FocusListener interface
    public void focusGained(FocusEvent e) {
    }

    public void focusLost(FocusEvent e) {
    }