gpt4 book ai didi

Java - Swing 监听表单文本字段中的 Action

转载 作者:搜寻专家 更新时间:2023-11-01 01:08:06 28 4
gpt4 key购买 nike

我想开发一个带有一些文本字段的表单。
示例:

Name
SecondName

想法是每个文本字段都包含如下文本:

Insert your name
Insert your second name

当您单击第一个文本字段以输入您的姓名时,必须删除文本“插入您的姓名”……第二个文本字段 (SecondName) 也必须如此。
效果应该是这样的:
enter image description here

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

最佳答案

查看 SwingLabs SwingX Library 中的 PromptSupport

例如

Prompt fields

当字段获得焦点时,“提示”将被隐藏,但您可以控制它,使其显示直到用户键入内容或在获得焦点时突出显示。

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 的一部分,它允许您将另一个组件与文本组件“结伴”。在这里,我完成了经典的“文件浏览器”组合,但我一直在做这样的“搜索”样式字段......

关于Java - Swing 监听表单文本字段中的 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578568/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com