2017-02-14 60 views
0

我在写这段代码时遇到了一些麻烦。我希望它做的是让Focus Listener观看以查看用户是否专注于某个文本框。如果不是,则会显示字符串“Search ...”。但是,focusGainedfocusLost中的searchText这两个实例都未被识别。我认为原因是因为searchText只在gui方法的范围之内。唯一的问题是,我不知道如何使searchText可用于focusGainedfocusLost.我已经尝试@Override,但似乎没有工作。FocusListener有问题

如果有人可以请帮助我,这将不胜感激。谢谢!

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) { 



} 

回答

0

您有一个范围问题。您需要使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); 
+0

谢谢!我将在后面的一些项目中记住这一点 – JCWMM