亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java-Swing偵聽表單文本字段中的動作

Java-Swing偵聽表單文本字段中的動作

冉冉說 2019-12-06 10:00:08
我想開發一個帶有一些文本字段的表格。例:NameSecondName這個想法是,每個文本字段都在文本內部包含以下內容:Insert your nameInsert your second name當您單擊第一個文本字段以輸入您的姓名時,必須刪除文本“插入您的姓名” ...第二個文本字段(SecondName)也必須如此。我認為我只需要在文本字段上執行一個操作,當用戶在文本字段上按下鼠標時就必須喚醒它,這可能嗎?
查看完整描述

3 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

看看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的一部分,該示例使您可以使用文本組件來“編排”另一個組件。在這里,我完成了經典的“文件瀏覽器”組合,但是我一直都在這樣做“搜索”樣式字段...


查看完整回答
反對 回復 2019-12-06
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

查看“ 文本提示”,這是一個簡單的解決方案,可讓您控制何時顯示/隱藏文本以及文本的字體/顏色。


它將與常規文本組件一起使用。以最簡單的形式,您只需要多一行代碼:


JTextField firstName = new JTextField(10);

TextPrompt tp = new TextPrompt("First Name", firstName);


查看完整回答
反對 回復 2019-12-06
  • 3 回答
  • 0 關注
  • 357 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號