【问题标题】:JTextField show '...' when content is too long当内容太长时,JTextField 显示“...”
【发布时间】:2012-02-13 16:18:36
【问题描述】:

JTextField 的内容长于显示区域时,我正在尝试使其显示点。我希望有与JTable 相同的行为,当我调整列的大小时,里面的文本会发生变化 - 当它只显示它的开头然后有三个点时(看看我的想法请运行link 中的第一个示例并更改列大小 - 我不允许发布图片,因为我是新来的;))

有可能吗?我想到的唯一解决方案是扩展 JTextField 一个类,该类将具有额外的字段 oryginalText 并且会表现得像那样(没有测试它,这只是一个提议,维度JtextField 不会改变):

import javax.swing.JTextField;

public class MyTextField extends JTextField {

    private String oryginalText;
    private int length;

    @Override
    public void setText(String text) {
        oryginalText = text;
        if (oryginalText.length() > length)
            super.setText(oryginalText.substring(0, length - 2) + "..");
        else
            super.setText(oryginalText);
    }
}

有什么想法吗?

【问题讨论】:

  • 实际上听起来不太友好。这确实是文本字段的非标准行为。
  • 您看到的行为是JLabel 的行为。如果您的文本不可编辑,请考虑使用它而不是 JTextField
  • @Robin 感谢澄清,不幸的是这个字段必须是可编辑的,但至少现在我知道哪个组件负责以这种方式显示文本
  • @aioobe 是的,这不是该组件的典型行为,但由于布局限制,我的字段可以使用更多字符然后显示,所以我必须有某种方式在用户离开字段后显示它- 我想我会采用 MyTextField 或类似的想法

标签: java swing jtextfield


【解决方案1】:

关于扩展 JTextField 并存储原始(未修剪)值的想法:

将文本字段显示为禁用(或不可编辑)并带有修剪的文本。当用户单击文本字段时,使其启用/可编辑并显示整个原始文本。

然后当用户按下回车或文本字段的焦点退出时:禁用/不可编辑和修剪文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2018-01-25
    • 2018-05-19
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多