2017-02-14 1 views
0

필자가 작성한이 코드에 약간의 문제가 있습니다. 내가 원하는 것은 포커스 리스너가 사용자가 특정 텍스트 상자에 포커스가 있는지를 감시하는 것입니다. 그렇지 않으면 문자열 "Search ..."가 표시됩니다. 그러나 focusGainedfocusLost에있는 searchText의 두 인스턴스는 인식되지 않습니다. 그 이유는 searchTextgui 방법의 범위에 있기 때문입니다. 유일한 문제는 및 focusLost.searchText을 사용할 수있는 방법을 모르겠다. 이미 시도한 바 있는데 작동하지 않는 것 같습니다.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