java swing JTextField设置PlaceHolder

我创建了一个JTextField,现在我想在JTextField上设置占位符我不知道如何在JTextField上设置占位符? 请帮助如何在JTextField上设置占位符文本

JTextField database=new JTextField("Enter Data Base Name"); database.setPreferredSize(database.getPreferredSize()); database.setText(""); 

这是我的代码到文本字段现在在该代码中我想设置占位符如何在该JTextField上设置占位符

试试这堂课:

 package playground; 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("All your base are belong to us!"); 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); } public PlaceholderTextField(final String pText) { super(pText); } public PlaceholderTextField(final String pText, final int pColumns) { super(pText, pColumns); } public String getPlaceholder() { return placeholder; } @Override protected void paintComponent(final Graphics pG) { super.paintComponent(pG); if (placeholder == null || placeholder.length() == 0 || getText().length() > 0) { return; } final Graphics2D g = (Graphics2D) pG; g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(getDisabledTextColor()); g.drawString(placeholder, getInsets().left, pG.getFontMetrics() .getMaxAscent() + getInsets().top); } public void setPlaceholder(final String s) { placeholder = s; } } 
 JTextField searchText; 

在构造函数中:

 searchText = new JTextField("Search"); searchText.setForeground(Color.GRAY); searchText.addFocusListener(new FocusListener() { @Override public void focusGained(FocusEvent e) { if (searchText.getText().equals("Search")) { searchText.setText(""); searchText.setForeground(Color.BLACK); } } @Override public void focusLost(FocusEvent e) { if (searchText.getText().isEmpty()) { searchText.setForeground(Color.GRAY); searchText.setText("Search"); } } }); 

如果我理解这个问题, 文本提示会显示一种方法可以做到这一点。

这么简单的使用swingx jar就像这样

 JTextArea txtMSISDNList = new JTextArea(); PromptSupport.setPrompt("01197585960,01197585961", txtMSISDNList);