当前位置: 首页 > 知识库问答 >
问题:

如何在用户开始键入时隐藏JBTextField占位符

罗绪
2023-03-14

我是IntelliJ插件开发的新手。

我使用JBTextField作为文本输入,因此我可以使用jbtextfild.getEmptyText().setText(…)方法设置占位符文本。

但根据IntelliJ平台UI指南,它说:

当用户开始键入时隐藏占位符,而不是当输入字段获得焦点时。

这不是文本字段本身的方式。它在获得焦点时隐藏占位符。

问题是,如何更改此行为,以便在用户键入某些内容时占位符消失(例如,类似于本机IDE的“新类”弹出窗口)。

共有1个答案

吴高洁
2023-03-14

我根据Yann Cebron的这个答案找到了一个解决方案。

com.intellij.ui.components的默认行为。TextComponentEmptyText#isStatusVisible可以通过JBTextField自定义。STATUS_VISIBLE_FUNCTION属性,它是对<code>布尔函数的引用

因此,我们可以引用一个布尔函数到< code > STATUS _ VISIBLE _ FUNCTION 键,如下所示:

import com.intellij.ui.components.JBTextField;
import com.intellij.ui.components.TextComponentEmptyText;
import com.intellij.util.BooleanFunction;

textField = new JBTextField();
textField.getEmptyText().setText("Placeholder...");
textField.putClientProperty(
    TextComponentEmptyText.STATUS_VISIBLE_FUNCTION, 
    (BooleanFunction<JBTextField>) tf -> tf.getText().isEmpty()
);
 类似资料:
  • 我有一个有很多编辑文本的活动。每当我加载该活动时,键盘就会出现并吃掉半个屏幕,这使得该活动看起来很糟糕。所以有什么方法可以隐藏键盘当我加载那个活动。

  • 我有一个在清单中带有< code > Android:windowSoftInputMode = " state visible " 的Edittext。现在,当我开始活动时,键盘会显示出来。怎么隐藏?我不能使用< code > Android:windowSoftInputMode = " state hidden ,因为当键盘可见时,最小化应用程序并恢复它,键盘应该是可见的。我试着 但它没有起

  • 问题内容: 除 Chrome 以外的所有浏览器都会自动执行此操作。 我猜我必须专门针对 Chrome 。 有什么办法吗? 如果不使用 CSS ,那么使用 jQuery ? 问题答案:

  • 有人能告诉我如何永远隐藏视图吗? 我用隐藏了一个视图,但是当重新打开应用程序时,我必须重新隐藏该视图。我想要一个视图隐藏总是当按钮被点击,直到清除应用程序数据或卸载。谢了!

  • 我正在构建一个简单的刽子手应用程序。我目前设置键盘隐藏后,用户触摸提交按钮,并限制EditText的最大长度为"1"。 我想要的是,在用户触摸字母键并成功地在编辑文本中输入有效条目后,键盘立即隐藏。我尝试过实现这里使用的KeyEvent方法,并对其进行了修改,以使用getMaxKeyCode()方法监听任何键代码。 更新***:为了澄清,我对回车按钮没有问题,它工作正常。我希望在用户触摸到他们猜测

  • 问题内容: 我想在JavaScript中隐藏Android虚拟键盘。 但是,如果键盘已经可见,这将不起作用。这是可以做到的吗? 问题答案: 您需要做的是创建一个新的输入字段,将其附加到正文中,对其进行聚焦并使用进行隐藏。不幸的是,您将需要将它们包含在一些setTimeouts中,以使其正常工作。