问题标签 [jtextcomponent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 具有 ActionListener 和 DocumentListener 的 JTextField
我在一个非常简单的 JFrame 上有几个 JTextField。字段 1 首先获得焦点。当用户输入一个数字并按 Enter 键时,我希望焦点切换到字段 2。为此,我将一个 ActionListener 附加到字段 1。我还有一个附加到字段 1 的文档侦听器,它只允许输入整数进入这个领域。
文档侦听器首先就位,它可以按我的意愿工作。然后我添加了 ActionListener,我认为(但我不确定)我的代码对此是否正确。但是,当我测试代码时,回车键似乎根本没有效果。我怀疑问题是两个侦听器之间的冲突,因为文档侦听器可能在 ActionListener 对它做出反应之前“吞下”了 enter 键。
我的代码如下。我对吗?我该如何纠正?谢谢!
java - 来自 JTextField 的波兰语字母
如何String
从波兰字母中获取JTextField
或JTextArea
使用波兰字母?当我使用myTxtArea.getText()
并且在我的JTextArea
我得到ĄĆĘŁŃÓŚŹŻąćęłńóśźż
它时,它只识别?????Ó????????ó???
.
JTextField
两者的文本都JTextArea
将保存在 *.txt 文件中
那是我的代码:
我想从以下地址获取波兰语信件:
String[] lines = AppGUI.getNote().getText().split("\\n");
java - 具有自动换行和有限宽度并支持 HTML 的 Swing 组件
我想实现一个带有滚动条的小工具提示,就像在类或成员上方悬停时出现的 eclipse 中的那样。
我遇到的问题是找到一种方法来限制我在工具提示中的滚动窗格中组件的宽度而不是高度。该组件应该支持 HTML,并且当文本超出内部边界的宽度时也可以正确包装文本,但是我尝试过的所有组件都具有换行或 HTML 呈现,但不是两者兼而有之
仅限制宽度的方法也无处可寻,因为每个“setXSize”,其中 X 是“首选”“最大”“最小”等都需要两个参数,并且组件没有“setMaxWidth”方法。
设置“setMaximumSize(new Dimension(256, Integer.MAX_VALUE);”似乎是一个解决方案,但它不起作用,因为“max”和“min”设置的参数大部分时间都被忽略,这非常令人沮丧。
根据要求提供当前的实施示例:
- 实际的代码有点复杂。但我认为这是一个很好的近似值......
java - 在java记事本中查找单词jtextfield
我应该设置什么条件才能突出显示 JTextArea 中的所有单词?此代码在没有 while 循环的情况下工作,但它只查找并突出显示第一个单词匹配。
java - 如何从 JFrame 中的文本框接收输入?
下面的方法扩展了一个 JFrame,但我需要在其中有一个 swing 文本框来接收双精度值并将它们存储在一个变量中。必须将文本框添加到容器中。
java - 如何使 JTextComponent 的插入符号跳过选定的文本?
许多环境中本机文本字段的正常行为如下:
带有文本“abcdefg”的文本字段。我用鼠标从左到右选择“efg”。插入符号现在位于“g”后面。当我通过按一次光标左键将插入符号向左移动时,选择被删除并且插入符号就在“e”之前。当我在 JTextField 或 JTextArea(在 Mac OS 上测试)中执行相同操作时,执行完全相同的操作会导致插入符号正好位于“g”之前。
我知道如何通过使用 KeyListener 并将其注册到每个组件来以编程方式更改它,但我正在寻找一种方法来为我的整个应用程序更改它。那可能吗?是否有标志,我没有找到或者我必须修改我的外观和感觉?
谢谢
java - How to globally change the ActionMap of Swing JTextFields?
I want to change the ActionMap of Swing JTextFields in my entire Application by replacing a few actions by my custom implmentations. For an explanation why you can refer to the following post:
How do I make the caret of a JTextComponent skip selected text?
This works well if I do this:
The only remaining problem now is that so far I have only gotten this to work, when I execute that code after the first instantiation of a JTextField. However, ideally I would like to integrate this code in a custom look and feel or some other central place that does not have to know about the application. Calling
first does not change anything. The map returned by UIManager.get("TextField.actionMap") is still null afterwards.
Right now I am Stuck with putting a dummy new JTextField() in some initialization method of my application and then manipulate the action map which is very ugly.
java - 将某些字符/键的输入重新映射到 JTextComponent 的最佳方法?
我正在研究一个JTextPane
(几乎)与stackoverflow上的标签输入字段完全一样的工作。为此,只要用户点击输入、制表符或空格,我就会将文本转换为组件。自然地,我不希望将这些字符中的任何一个实际输入到文本窗格中。我找到了这个解决方案,SSCCE:
点击“tab”通常会导致插入一个制表符,点击“enter”通常会导致输入换行符,点击“space”会导致输入空格。奇怪的是,我的代码停止输入换行符和制表符,但仍然允许正常输入空格,同时执行预期的操作。
java - 为什么这个字体在 Java 中这么大?
我正在尝试使用 OpenDyslexic 作为 Swing 应用程序中的字体选项。但令人惊讶的是,OpenDyslexic 在相同的磅值下看起来比任何其他字体都要大得多,即使它在其他应用程序中看起来是正常大小的。我尝试了一些其他 OpenType 字体,它们看起来不是特别大或特别小。为什么 OpenDyslexic 在 Java 中如此之大,我怎样才能让 Java 正常调整它的大小,这样我就不必对 OpenDyslexic 的大小进行特殊处理?
在所有操作系统上的 Oracle JRE(我尝试了 1.7.0_11、1.7.0_15 和最新的 1.7.0_21)上,当 Java 使用Font.createFont
. 但是,当我将字体安装到操作系统中时,所有 3 个平台上的行为都不同:
- 在 Linux 中,安装字体
~/.fonts
没有好处。安装字体之前和安装之后的屏幕截图看起来相同。 - 在 Windows 中,安装字体修复了字体字形,但字体间距仍然太大!请参阅下面的屏幕截图。
- 在 OS X 中,安装字体可以修复它!它看起来像 OS X 上的正常大小的字体。
更新:有趣的是,OpenJDK(Linux 中的 7u21 Ubuntu 软件包和 OS X 上的 obuildfactory 构建)没有出现该错误。15pt OpenDyslexic 'm' 在 OpenJDK 上是 15px 宽,无论是从文件创建字体还是由操作系统处理字体时都应该如此。该错误出现在最新的 Oracle JRE 中,但不在最新的 OpenJDK 中。
这是我的示例程序。请注意,要尝试它,您需要将OpenDyslexic文件放入 resources/. 或者,将 OpenDyslexic 安装到您的系统中并registerFonts()
拨打电话。
java - 在 n 个字符后阻止文本写入
我有这段代码,在插入 n 个字符后“禁用” JTextField 上的用户输入:
它可以工作,但我想知道是否有替代方法,因为我在一台旧的慢速计算机上尝试过,当我在文本字段中输入内容时,字母被添加,然后它消失了......我想避免e.consume()
在用户输入后使用并直接阻止插入。
可能吗?
编辑
我忘了提及我JTextField
仅用于此示例,但我希望此代码与通用文本输入组件(如JTextPane
,JTextArea
等)一起使用