Focus Problem

I am having a problem with a program that is supposed to change a JLabel’s text based on which of three jtextfields is selected. I get no errors when I compile but the label will not change. Here is my code:

import java.util.Vector;
import java.awt.;
import java.awt.event.
;
import javax.swing.;
import java.io.
;
import java.awt.BorderLayout;
import java.awt.FlowLayout; import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.GridLayout;
import javax.swing.JTextField;
import java.util.*;

public class DataEntry extends JFrame implements FocusListener
{
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JLabel label4;
private JPanel Panel1;
private JPanel Panel2;
private JPanel Panel3;
//public MaxLengthTextDocument maxLength;
private JTextField textField1;
private JTextField textField2;
private JTextField textField3;
private BorderLayout layout;
private GridLayout gridLayout1;
private FlowLayout flowLayout1;
//public static final int WHEN_FOCUSED;
private String a;
private String b;
private String c;
private int f;

private int x;
private int y;
private int z;



public DataEntry()
{
	super("Data Entry");

	layout = new BorderLayout(5,10);
	flowLayout1= new FlowLayout();
	setLayout(layout);
	Panel1 = new JPanel();
	Panel2=new JPanel();
	Panel3=new JPanel();
	Random randomNumber=new Random();
	x=1000 + randomNumber.nextInt(9000);
	y=1000 + randomNumber.nextInt(9000);
	z=1000 + randomNumber.nextInt(9000);
    //MaxLengthTextDocument maxLength = new MaxLengthTextDocument();
    //maxLength.setMaxChars(4);

	a=String.valueOf(x);
	b=String.valueOf(y);

	c=String.valueOf(z);

	label1=new JLabel(a);
	label2=new JLabel(b);
	label3=new JLabel(c);
	label4=new JLabel("");

	add(Panel1,BorderLayout.NORTH);
	Panel1.setLayout(flowLayout1);
	Panel1.add(label1);
	Panel1.add(label2);
	Panel1.add(label3);

	add(Panel2,BorderLayout.SOUTH);
	textField2=new JTextField(4);
	textField3=new JTextField(4);
	textField1=new JTextField(4);
	textField1.addFocusListener(this);
	textField3.addFocusListener(this);
	textField2.addFocusListener(this);

    textField1.setName("David");
    textField2.setName("John");
	//textField1.setActionCommand("First");
	//textField2.setActionCommand("Second");
	Panel2.add(textField1);
	Panel2.add(textField2);
	Panel2.add(textField3);

	add(Panel3,BorderLayout.CENTER);
	Panel3.setLayout(flowLayout1);
	Panel3.add(label4);




}
public void focusGained(FocusEvent e) {

if(getName()=="John")
{
	label4.setText("Hello");
}

}

public void focusLost(FocusEvent e) {

}

}

Change your focusGained method to the following:


public void focusGained(FocusEvent e) {
	System.out.println("focusGained");
	if(e.getComponent() instanceof JTextField) {
		JTextField jTextField = (JTextField) e.getComponent();
		if(jTextField.getName() != null && jTextField.getName().equals("John")) {
			label4.setText("Hello");
		} else {
			label4.setText("");
		}
	}
}

That should work a bit better for you.

Your current ‘getName()’ method is calling ‘getName()’ on your JFrame, not the component that is getting the focus event called on it…

Thanks for the help hooknc, its working fine now.