gpt4 book ai didi

带有输入提示的 Java JTextField

转载 作者:IT老高 更新时间:2023-10-28 20:42:04 25 4
gpt4 key购买 nike

我想为我的 javax.swing.JTextField 添加一个提示值。它应该看起来像 <input type="text" title="bla"> 的 Firefox 渲染。 .这将在背景中创建一个带有文本“bla”的编辑字段。如果文本框具有焦点,则标题文本会消失,如果用户离开编辑框而没有文本,则会重新出现。

是否有(免费) Swing 组件可以做这样的事情?

最佳答案

您可以创建自己的:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.*;

public class Main {

public static void main(String[] args) {

final JFrame frame = new JFrame();

frame.setLayout(new BorderLayout());

final JTextField textFieldA = new HintTextField("A hint here");
final JTextField textFieldB = new HintTextField("Another hint here");

frame.add(textFieldA, BorderLayout.NORTH);
frame.add(textFieldB, BorderLayout.CENTER);
JButton btnGetText = new JButton("Get text");

btnGetText.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String message = String.format("textFieldA='%s', textFieldB='%s'",
textFieldA.getText(), textFieldB.getText());
JOptionPane.showMessageDialog(frame, message);
}
});

frame.add(btnGetText, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
}
}

class HintTextField extends JTextField implements FocusListener {

private final String hint;
private boolean showingHint;

public HintTextField(final String hint) {
super(hint);
this.hint = hint;
this.showingHint = true;
super.addFocusListener(this);
}

@Override
public void focusGained(FocusEvent e) {
if(this.getText().isEmpty()) {
super.setText("");
showingHint = false;
}
}
@Override
public void focusLost(FocusEvent e) {
if(this.getText().isEmpty()) {
super.setText(hint);
showingHint = true;
}
}

@Override
public String getText() {
return showingHint ? "" : super.getText();
}
}

如果您仍在使用 Java 1.5,请将 this.getText().isEmpty() 替换为 this.getText().length() == 0 .

关于带有输入提示的 Java JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1738966/

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