Ich hab das hier mal etwas anders gemacht, weil ich es unnötig fand eine Methode nur für den Super-Aufruf zu haben:
PHP
import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.event.FocusListener;
import java.awt.event.FocusEvent;
public class ChatTextField extends JTextField implements DocumentListener, FocusListener {
private boolean textEingegeben = false;
private Color hasFocusForeground;
private String platzhalter = "Eingabe";
private Color platzhalterFarbe = Color.GRAY;
public ChatTextField() {
super();
hasFocusForeground = getForeground();
super.setForeground(platzhalterFarbe);
super.setText(platzhalter);
addFocusListener(this);
}
public ChatTextField(String platzhalter, Color platzhalterFarbe) {
super();
this.platzhalter = platzhalter;
this.platzhalterFarbe = platzhalterFarbe;
hasFocusForeground = getForeground();
super.setForeground(platzhalterFarbe);
super.setText(platzhalter);
addFocusListener(this);
}
public void changedUpdate(DocumentEvent e) {
textEingegeben = true;
}
public void insertUpdate(DocumentEvent e) {
textEingegeben = true;
}
public void removeUpdate(DocumentEvent e) {
if(getText().length()!=0) {
textEingegeben = true;
} else {
textEingegeben = false;
}
}
public void focusGained(FocusEvent e) {
if(textEingegeben==false) {
super.setText("");
}
super.setForeground(hasFocusForeground);
getDocument().addDocumentListener(this);
}
public void focusLost(FocusEvent e) {
getDocument().removeDocumentListener(this);
if(!textEingegeben) {
super.setForeground(platzhalterFarbe);
super.setText(platzhalter);
}
}
public void setPlatzhalter(String platzhalter) {
this.platzhalter = platzhalter;
if(!textEingegeben && !this.hasFocus()) {
super.setText(platzhalter);
}
}
public void setPlatzhalterFarbe(Color platzhalterFarbe) {
this.platzhalterFarbe = platzhalterFarbe;
if(!textEingegeben && !this.hasFocus()) {
super.setForeground(platzhalterFarbe);
}
}
public void setText(String text) {
super.setText(text);
if(text.equals("")) {
textEingegeben = false;
if(!hasFocus()) {
super.setText(platzhalter);
super.setForeground(platzhalterFarbe);
}
} else {
textEingegeben = true;
super.setForeground(hasFocusForeground);
}
}
public void setForeground(Color foreground) {
hasFocusForeground = foreground;
if(hasFocus()) {
super.setForeground(foreground);
}
}
public String getText() {
if(textEingegeben) {
return super.getText();
} else {
return "";
}
}
}
Alles anzeigen