2017-02-14 69 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