猿问

Java-Swing侦听表单文本字段中的动作

我想开发一个带有一些文本字段的表格。

例:


Name

SecondName

这个想法是,每个文本字段都在文本内部包含以下内容:


Insert your name

Insert your second name

当您单击第一个文本字段以输入您的姓名时,必须删除文本“插入您的姓名” ...第二个文本字段(SecondName)也必须如此。

我认为我只需要在文本字段上执行一个操作,当用户在文本字段上按下鼠标时就必须唤醒它,这可能吗?


HUX布斯
浏览 353回答 3
3回答

呼啦一阵风

看看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的一部分,该示例使您可以使用文本组件来“编排”另一个组件。在这里,我完成了经典的“文件浏览器”组合,但是我一直都在这样做“搜索”样式字段...

RISEBY

查看“ 文本提示”,这是一个简单的解决方案,可让您控制何时显示/隐藏文本以及文本的字体/颜色。它将与常规文本组件一起使用。以最简单的形式,您只需要多一行代码:JTextField firstName = new JTextField(10);TextPrompt tp = new TextPrompt("First Name", firstName);
随时随地看视频慕课网APP

相关分类

Java
我要回答