【问题标题】:Having trouble with FocusListenerFocusListener 遇到问题
【发布时间】:2017-02-14 18:23:47
【问题描述】:

我在编写这段代码时遇到了一些问题。我想要它做的是让 Focus Listener 观察用户是否专注于某个文本框。如果没有,将显示字符串“Search...”。但是,focusGainedfocusLost 中的 searchText 的两个实例都无法识别。我认为原因是因为searchText 仅在gui 方法的范围内。唯一的问题是,我不知道如何使searchText 可用于focusGainedfocusLost. 我已经尝试过@Override,但这似乎不起作用。

如果有人可以帮我解决这个问题,将不胜感激。谢谢!

    package org.plugandplay.project.project2_0;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;



public class gui extends JFrame implements ActionListener, FocusListener {

    public gui() {
        super("Project 2.0 Indev");
        setLookAndFeel();
        setSize(300, 300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        ImageIcon search = new ImageIcon("C:/Users/User/Documents/searchicon.png");
    JButton searchButton = new JButton(search);

    JTextField searchText = new JTextField("Search...");

    searchText.addFocusListener(this);
    searchText.setColumns(15);



    JToolBar toolbar = new JToolBar("Search...");
    toolbar.add(searchText);
    toolbar.add(searchButton);


    BorderLayout border = new BorderLayout();
    setLayout(border);
    add("North", toolbar);

} 
    @Override
    public void focusGained(FocusEvent ev) {
        searchText.setText("");
    }

    public void focusLost(FocusEvent ev) {
        searchText.setText("Search...");
    }

    public void actionPerformed(ActionEvent event) {



}

【问题讨论】:

    标签: java focuslistener


    【解决方案1】:

    您遇到了范围问题。您需要将 searchText 设为对象成员:

    public class gui extends JFrame implements ActionListener, FocusListener {
    
        //put searchText here
        JTextField searchText;
    
    
        public gui() {
            super("Project 2.0 Indev");
            setLookAndFeel();
            setSize(300, 300);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    
            ImageIcon search = new ImageIcon("C:/Users/User/Documents/searchicon.png");
        JButton searchButton = new JButton(search);
        searchText = new JTextField("Search...");
        searchText.addFocusListener(this);
        searchText.setColumns(15);
    

    【讨论】:

    • 谢谢!我会在以后的一些项目中记住这一点
    猜你喜欢
    • 2014-11-30
    • 2021-08-09
    • 2017-05-02
    • 2021-02-01
    • 2012-10-31
    • 2019-07-26
    • 2018-01-07
    • 2016-06-11
    • 1970-01-01
    相关资源
    最近更新 更多