2015-06-15 60 views
5

Gibt es einen Weg oder eine Methode, in dem wir Platzhalter in j Textfeld hinzufügen können. Ich möchte Platzhalter "Geben Sie Ihre Nummer" in Feld hinzufügen, aber wie kann ich das tun. Ich habe alle Methoden überprüft, aber nicht funktioniert.
Code:Java: Platzhalter auf JTextField hinzufügen

public class Loop extends JFrame{ 

    private JTextField t1; 

     public L(){ 

     getContentPane().setLayout(null); 
     t1=new JTextField(); 
     t1.setBounds(27,50,47,28); 
     getContentPane().add(t1); 

     setSize(400,400); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 
     setVisible(true); 

    } 

     } 

Main:

public class Main { 

    public static void main(String[] args) { 

     L object = new L(); 
    } 

    } 

Antwort

1

Check out Text Prompt für eine flexible Lösung.

Sie können steuern, wann die Eingabeaufforderung angezeigt wird (immer Fokus erhöht oder Fokus verloren). Sie können den Stil des Textes auch anpassen.

+0

könnten Sie bitte Code von TextPrompt Platzhalter in meinem obigen Code machen ich bin fest hier. –

+0

@TimAllen, seine eine Codezeile, um 'TextPrompt' mit seinen Standardeinstellungen zu verwenden. Ich weiß nicht, wie du feststeckst. Aktualisieren Sie Ihre Anzeige, was Sie versucht haben und erklären Sie, was nicht so funktioniert, wie Sie es möchten. – camickr

1

Dieser Code funktionieren sollte, ist es auf den ersten Klick hören und entfernt den Text

public class Loop extends JFrame{ 
    private JTextField t1; 
    private boolean clicked = false; 
    public L(){ 
     getContentPane().setLayout(null); 
     t1=new JTextField(); 
     t1.setText("Enter Your Number"); 
     t1.addMouseListener(new MouseAdapter(){ 
      @Override 
      public void mousePressed(MouseEvent e){ 
       if(!clicked){ 
        clicked=true; 
        t1.setText(""); 
       } 
      } 
     } 
     t1.setBounds(27,50,47,28); 
     getContentPane().add(t1); 
     setSize(400,400); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 
     setVisible(true); 
    } 
} 

Vielleicht gibt es bessere Lösung
Hinweis - nicht getestet


EDIT (wie die boolean clicked works)
, wenn Sie anrufen Methode mousePressed(MouseEvent) beim ersten Mal, die clicked Variable ist false durch Erklärung:

private boolean clicked = false; 

So ist der if Körper ausgeführt wird (weil geklickt = false! = true)
im if Körper, die clicked Variable auf true gesetzt ist, wird so if Zustand sein dann falsch: (weil geklickt = true = false)
! Dies löst das Problem, Code nur einmal auszuführen. Hier

+0

können Sie mir bitte in einfachen Worten sagen, wie Boolean funktioniert, wenn Bedingung –

+0

if (true) {} oder boolean p = true; if (p) {} oder if (! p) {} – TinyOS

+1

Verwenden Sie kein Null-Layout. Keine vollständige Lösung. Was passiert, wenn der Benutzer in das Textfeld wechselt? Eine GUI sollte so konzipiert sein, dass sie funktioniert, egal ob der Benutzer eine Maus oder die Tastatur verwendet. Was passiert, wenn der Benutzer auf das Feld klickt und dann auf ein anderes Feld klickt? Der Text wird entfernt, aber nie ersetzt. – camickr

2

ist ein Beispiel für die Sie können Sie

package TinyOS; 
import java.awt.*; 
import javax.swing.*; 
import javax.swing.text.Document; 

@SuppressWarnings("serial") 
public class PlaceholderTextField extends JTextField { 

public static void main(final String[] args) { 
    final PlaceholderTextField tf = new PlaceholderTextField (""); 
    tf.setColumns(20); 
    tf.setPlaceholder("Here is a placeHolder!"); 
    final Font f = tf.getFont(); 
    tf.setFont(new Font(f.getName(), f.getStyle(), 30)); 
    JOptionPane.showMessageDialog(null, tf); 
} 

private String placeholder; 

public PlaceholderTextField() { 
} 

public PlaceholderTextField (
    final Document pDoc, 
    final String pText, 
    final int pColumns) 
{ 
    super(pDoc, pText, pColumns); 
} 

public PlaceholderTextField (final int pColumns) { 
    super(pColumns); 
} 
} 

inspirieren hoffe ich, dass Ihnen helfen,

Verwandte Themen