【发布时间】: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