当前位置: 首页 > 面试题库 >

向空的JCombobox添加水印

凌意
2023-03-14
问题内容

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

我的意思是,当editable上没有文本时JComboBox,将显示指令文本,"Type here"诸如此类。当JComboBox集中的文本被删除。如果焦点丢失而没有键入任何文本,则说明文本会返回。


问题答案:

注意:

请查看文本提示,以更完整地实现以下代码,并提供更多功能。

我把一些简单的东西放在一起。我敢肯定你可以整理一下。由于代码可以在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);
    }
}


 类似资料:
  • 我有和我在上编写了以下代码,以从选定项中添加行。 如果用户键入了所需的名称并点击了enter,则必须将其添加到jtable,但它不会添加一行。 我认为事件是原因, 通常我们首先从jComboBox中选择项,然后对 事件(例如JButton)进行编码。 所以在这里,我希望jComboBox中考虑所选项事件被添加到JTable中。 那么对于哪一个事件我必须编写代码或另一种方法来处理呢?

  • 我需要为每个有特定文本的页面添加水印,例如“删除过程”。 基于Bruno Lowagie的建议将水印直接添加到流中 迄今为止,PdfWatermark类具有: 如果我在自定义detectPages方法中将数字3添加到arrPages ArrayList中,则效果很好-它在第3页上显示所需的水印。 我遇到的问题是如何在文档中搜索文本字符串,我只能从PdfWriter writer或com访问文本字符

  • 我正在Java创建一个 代码:

  • 我创建了一个表单,其中添加了一个,它有3列。第二列和第三列有编辑器。 我希望当我们选择第二列组合框的第一项时,第三列组合框的第一个组合框也应该被选择,反之亦然。 我该怎么做?

  • 正如标题所说:如何将水平滚动条添加到我用JFreeChart创建的阴阳烛图表中?我希望用户在放大时能够水平滚动图表。现在放大起作用了,但我不能向左或向右移动。我试着把图表面板放入JScrollPane,但那是一个图表面板,而不是图表本身。我自定义的ChartPanel构造函数: 我的自定义Jboard,我在其中创建图表和图表面板,并将图表面板放在JScrollPane中: 然后,我将MyCandl