2015-06-15 20 views
5

Có cách nào hay phương pháp mà chúng ta có thể thêm trình giữ chỗ vào trường văn bản j. Tôi muốn thêm phần giữ chỗ "Nhập số của bạn" vào trường nhưng tôi có thể làm như thế nào. Tôi kiểm tra tất cả các phương pháp nhưng không hoạt động.
Code:Java: Thêm Place Place trên 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); 

    } 

     } 

chính:

public class Main { 

    public static void main(String[] args) { 

     L object = new L(); 
    } 

    } 

Trả lời

1

Check-out Text Prompt kiếm một giải pháp linh hoạt.

Bạn có thể kiểm soát thời điểm hiển thị lời nhắc (luôn luôn lấy nét hoặc lấy tiêu điểm). Bạn cũng có thể tùy chỉnh kiểu của văn bản.

+0

bạn có thể vui lòng tạo mã của trình giữ chỗ TextPrompt trong mã trên của mình không. –

+0

@TimAllen, một dòng mã để sử dụng 'TextPrompt' với cài đặt mặc định của nó. Tôi không biết làm thế nào bạn đang mắc kẹt. Cập nhật hiển thị những gì bạn đã thử và giải thích những gì không hoạt động theo cách bạn muốn. – camickr

1

Mã này nên làm việc, nó nghe trên nhấp chuột đầu tiên và loại bỏ các văn bản giải pháp

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

Có lẽ tốt hơn tồn tại
Lưu ý - không đã kiểm tra


EDIT (cách boolean clicked công trình)
khi bạn gọi phương thức mousePressed(MouseEvent) ở lần đầu tiên, biến clickedfalse, bởi tuyên bố:

private boolean clicked = false; 

Vì vậy, cơ thể if được thực hiện (vì nhấp = false! = true)
trong cơ thể if, biến clicked được thiết lập là true, vì vậy if điều kiện sẽ được sau đó sai: (vì nhấp = true = false)
! Điều này giải quyết vấn đề chạy mã chỉ một lần.

+0

bạn có thể vui lòng cho tôi biết bằng những từ đơn giản như thế nào boolean hoạt động nếu điều kiện –

+0

nếu (true) {} hoặc boolean p = true; if (p) {} hoặc if (! p) {} – TinyOS

+1

Không sử dụng bố cục rỗng. Không phải là một giải pháp hoàn chỉnh. Điều gì xảy ra nếu người dùng tab vào trường văn bản? Một GUI nên được thiết kế để làm việc cho dù người dùng sử dụng chuột hay bàn phím. Điều gì sẽ xảy ra nếu người dùng nhấp vào trường và sau đó nhấp vào một trường khác? Văn bản được xóa nhưng không bao giờ được thay thế. – camickr

2

Dưới đây là một ví dụ trong đó bạn bạn có thể truyền cảm hứng cho

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

Tôi hy vọng rằng có thể giúp bạn

Các vấn đề liên quan