我想开发一个带有一些文本字段的表单.
例:
Run Code Online (Sandbox Code Playgroud)Name SecondName
这个想法是每个文本字段都有一个文本,如:
Run Code Online (Sandbox Code Playgroud)Insert your name Insert your second name
当您单击第一个文本字段以写入您的姓名时,必须删除文本"插入您的姓名"...第二个文本字段(SecondName)必须同样发生.
效果必须是这样的:

我认为我只需要在文本字段上执行一个Action,当用户在文本字段上按下鼠标时必须唤醒它,这可能吗?
谢谢
看看PromptSupport中的SwingLabs SwingX图书馆
例如

当字段具有焦点时,"提示"将被隐藏,但您可以控制它,使其显示直到用户键入内容或在获得焦点时突出显示.
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import org.jdesktop.swingx.prompt.BuddySupport;
import org.jdesktop.swingx.prompt.PromptSupport;
public class PromptSupportTest {
    public static void main(String[] args) {
        new PromptSupportTest();
    }
    public PromptSupportTest() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }
                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
    public class TestPane extends JPanel {
        public TestPane() {
            JTextField firstName = new JTextField(10);
            PromptSupport.setPrompt("First Name", firstName);
            PromptSupport.setFocusBehavior(PromptSupport.FocusBehavior.HIDE_PROMPT, firstName);
            JTextField lastName = new JTextField(10);
            PromptSupport.setPrompt("Last Name", lastName);
            PromptSupport.setFocusBehavior(PromptSupport.FocusBehavior.HIDE_PROMPT, lastName);
            JTextField picture = new JTextField(10);
            PromptSupport.setPrompt("Picture", picture);
            PromptSupport.setFocusBehavior(PromptSupport.FocusBehavior.HIDE_PROMPT, picture);
            JButton browse = new JButton("...");
            browse.setMargin(new Insets(0, 0, 0, 0));
            browse.setContentAreaFilled(false);
            browse.setFocusPainted(false);
            browse.setFocusable(false);
            browse.setOpaque(false);
            // Add action listener to brose button to show JFileChooser...
            BuddySupport.addRight(browse, picture);
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            gbc.weightx = 1;
            add(firstName, gbc);
            add(lastName, gbc);
            add(picture, gbc);
            gbc.anchor = GridBagConstraints.CENTER;
            add(new JButton("Ok"), gbc);
        }
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }
    }
}
我还添加了一个示例,BuddySupport它是同一个API的一部分,它允许您与文本组件"伙伴"另一个组件.在这里,我已经完成了经典的"文件浏览器"组合,但我一直在"搜索"这样的样式字段......
查看文本提示符以获得一个简单的解决方案,该解决方案允许您控制文本的显示/隐藏时间以及文本的字体/颜色.
它适用于常规文本组件.在最简单的形式中,您只需要一行额外的代码:
JTextField firstName = new JTextField(10);
TextPrompt tp = new TextPrompt("First Name", firstName);
| 归档时间: | 
 | 
| 查看次数: | 2513 次 | 
| 最近记录: |