Java: 在 JTextField 中添加占位符
Java: Add Place Holder on JTextField
有没有一种方法可以在 j 文本字段中添加占位符。我想在字段中添加占位符 "Enter Your Number" 但我该怎么做。我检查了所有方法,但没有用。
代码:
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);
}
}
主要:
public class Main {
public static void main(String[] args) {
L object = new L();
}
}
这段代码应该可以工作,它会在第一次点击时侦听并删除文本
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);
}
}
也许存在更好的解决方案
注意 - 未测试
EDIT(布尔值 clicked
的工作原理)
当你第一次调用方法 mousePressed(MouseEvent)
时,clicked
变量是 false
,通过声明:
private boolean clicked = false;
因此 if
主体被执行(因为 !clicked = !false = true)
在 if
正文中,clicked
变量设置为 true,因此 if
条件将为 false:(因为 !clicked = !true = false)
这解决了 运行 代码一次的问题。
这是一个你可以启发的例子
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);
}
}
希望能帮到你
查看 Text Prompt 以获得灵活的解决方案。
您可以控制何时显示提示(总是,获得焦点或失去焦点)。您还可以自定义文字的样式。
有没有一种方法可以在 j 文本字段中添加占位符。我想在字段中添加占位符 "Enter Your Number" 但我该怎么做。我检查了所有方法,但没有用。
代码:
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);
}
}
主要:
public class Main {
public static void main(String[] args) {
L object = new L();
}
}
这段代码应该可以工作,它会在第一次点击时侦听并删除文本
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);
}
}
也许存在更好的解决方案
注意 - 未测试
EDIT(布尔值
clicked
的工作原理)当你第一次调用方法
mousePressed(MouseEvent)
时,clicked
变量是 false
,通过声明:
private boolean clicked = false;
因此 if
主体被执行(因为 !clicked = !false = true)
在 if
正文中,clicked
变量设置为 true,因此 if
条件将为 false:(因为 !clicked = !true = false)
这解决了 运行 代码一次的问题。
这是一个你可以启发的例子
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);
}
}
希望能帮到你
查看 Text Prompt 以获得灵活的解决方案。
您可以控制何时显示提示(总是,获得焦点或失去焦点)。您还可以自定义文字的样式。