2015-06-15 10 views
5

Czy istnieje sposób lub metoda, w której możemy dodać symbol zastępczy w polu tekstowym j. Chcę dodać symbol zastępczy "Wprowadź swój numer" w polu, ale jak mogę to zrobić. Sprawdzam wszystkie metody, ale nie działa.
Kod:Java: Dodaj uchwyt miejsca na JTextField

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); 

    } 

     } 

główne:

public class Main { 

    public static void main(String[] args) { 

     L object = new L(); 
    } 

    } 

Odpowiedz

1

Check out Text Prompt elastycznego rozwiązania.

Możesz kontrolować wyświetlanie monitu (zawsze, fokus zyskuje lub utrata ostrości). Możesz również dostosować styl tekstu.

+0

Czy możesz proszę, aby kod właściciela miejsca TextPrompt w moim powyższym kodzie utknąłem w tym. –

+0

@TimAllen, jedna linia kodu do użycia 'TextPrompt' z ustawieniami domyślnymi. Nie wiem, jak utknąłeś. Zaktualizuj swój pokaz, który wypróbowałeś i wyjaśnij, co nie działa tak, jak chcesz. – camickr

1

Kod ten powinien działać, to słuchać na pierwszego kliknięcia i usuwa tekst

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); 
    } 
} 

Może lepszym rozwiązaniem istnieje
Uwaga - nie przetestowano


EDYTOWANIE (jak boolean clicked prace)
podczas wywoływania metody mousePressed(MouseEvent) na pierwszy raz, zmienna clicked jest false, poprzez oświadczenie:

private boolean clicked = false; 

więc organizm if jest wykonywana (ponieważ kliknięciu = false! = true)
w organizmie if zmienna clicked jest ustawiony na true, więc if warunek będzie wtedy fałszywe (bo kliknięciu = true = false)
! Rozwiązuje to problem z uruchomieniem kodu tylko raz.

+0

czy możesz mi powiedzieć w prostych słowach, jak działa boolean, jeśli pod warunkiem –

+0

jeśli (true) {} lub boolean p = true; if (p) {} lub if (! p) {} – TinyOS

+1

Nie używaj układu pustego. Nie jest to kompletne rozwiązanie. Co się stanie, jeśli użytkownik wpisze kartę w polu tekstowym? GUI powinien być zaprojektowany tak, aby działał niezależnie od tego, czy użytkownik korzysta z myszy czy klawiatury. Co się stanie, gdy użytkownik kliknie pole, a następnie kliknie na inne pole? Tekst jest usuwany, ale nigdy nie jest zastępowany. – camickr

2

Oto przykład z których można inspirować

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); 
} 
} 

Mam nadzieję, że może pomóc