Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 焦点侦听器有问题_Java_Focuslistener - Fatal编程技术网

Java 焦点侦听器有问题

Java 焦点侦听器有问题,java,focuslistener,Java,Focuslistener,我写的代码有点问题。我想让它做的是让焦点侦听器观察用户是否关注某个文本框。否则,将显示字符串“搜索…”。但是,focusgound和focusLost中的searchText实例都无法识别。我认为原因在于searchText仅在gui方法的范围内。唯一的问题是,我不知道如何使searchText可用于focusgound和focusLost。我已经尝试了@Override,但这似乎不起作用 如果有人能帮我,我将不胜感激。谢谢 package org.plugandplay.project

我写的代码有点问题。我想让它做的是让焦点侦听器观察用户是否关注某个文本框。否则,将显示字符串“搜索…”。但是,
focusgound
focusLost
中的
searchText
实例都无法识别。我认为原因在于
searchText
仅在
gui
方法的范围内。唯一的问题是,我不知道如何使
searchText
可用于
focusgound
focusLost。
我已经尝试了
@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) {



}

您遇到了范围问题。您需要将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);

谢谢我将在以后的一些项目中牢记这一点