gpt4 book ai didi

java - 向空的 JCombobox 添加水印

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:33 25 4
gpt4 key购买 nike

我正在尝试重现 Firefox 或 Safari 的搜索字段或本页右上角 stackoverflow.com 的搜索字段的行为。

我的意思是,当可编辑的 JComboBox 上没有文本时,会显示一个说明文本,例如 "Type here" 或其他内容。当 JComboBox 获得焦点时,文本将被删除。如果在没有输入文本的情况下失去焦点,说明文本会返回。

最佳答案

注意:

查看 Text Prompt以获得具有更多功能的以下代码的更完整实现。


这是我拼凑的一些简单的东西。我相信你可以收拾它。由于代码在 JTextField 上运行,因此您需要获取组合框的编辑器。我对 Glazed 列表的实现方式一无所知,所以我只是猜测它对您有用。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class TextPrompt extends JLabel
implements FocusListener, DocumentListener
{
private JTextComponent component;
private Document document;

public TextPrompt(String text, JTextComponent component)
{
this.component = component;
document = component.getDocument();

setText( text );
setFont( component.getFont() );
setBorder( new EmptyBorder(component.getInsets()) );

component.addFocusListener( this );
document.addDocumentListener( this );

component.add( this );
}

public void checkForPrompt()
{
if (document.getLength() == 0)
setSize( component.getSize() );
else
setSize(0, 0);
}

// Implement FocusListener

public void focusGained(FocusEvent e)
{
checkForPrompt();
}

public void focusLost(FocusEvent e)
{
setSize(0, 0);
}

// Implement DocumentListener

public void insertUpdate(DocumentEvent e)
{
checkForPrompt();
}

public void removeUpdate(DocumentEvent e)
{
checkForPrompt();
}

public void changedUpdate(DocumentEvent e) {}

public static void main(String[] args)
{
JPanel panel = new JPanel();
JTextField tf1 = new JTextField(10);
panel.add(tf1);
JTextField tf2 = new JTextField(10);
panel.add(tf2);

new TextPrompt("First Name", tf1);
new TextPrompt("Last Name", tf2);

JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}

关于java - 向空的 JCombobox 添加水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805486/

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