java - 当内容太长时 JTextField 显示 '...'

标签 java swing jtextfield

我试图让 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);
    }
}

有什么想法吗?

最佳答案

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

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

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

关于java - 当内容太长时 JTextField 显示 '...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263947/

相关文章:

java - Spring MVC 中的 Ajax 无法正常工作

Java在Swing上画圆和线

java - 如何设置组件的DataFlavor?

java - 如何在另一个窗口上使用 JTable 中选定的值填充文本字段?

java - 如何使用 illinois-edison 序列化/反序列化

java - java中的双向客户端服务器通信

java - 如何使用 JButton 更改 JLabel 中的图标

java - JPanel定制油漆

java - 如何获取 JTextField 中的字符数?

java - 从 JTextField 中删除添加的边框并使其恢复正常