Java 当文本超过文本大小时,如何显示点?
当Java 当文本超过文本大小时,如何显示点?,java,swt,Java,Swt,当文本的内容超过文本的宽度时,我想在文本字段的末尾显示点(…) 我尝试使用ModifyListener,但没有成功。任何有关这方面的帮助都将不胜感激 @Override public void modifyText(ModifyEvent e) { // TODO Auto-generated method stub if (wakeupPatternText.getText().length()>=12) {
文本
的内容超过文本
的宽度时,我想在文本字段的末尾显示点(…
)
我尝试使用ModifyListener
,但没有成功。任何有关这方面的帮助都将不胜感激
@Override
public void modifyText(ModifyEvent e) {
// TODO Auto-generated method stub
if (wakeupPatternText.getText().length()>=12) {
String wakeuppattern=wakeupPatternText.getText(0, 11);
String dot="...";
String wakeup=wakeuppattern+dot;
wakeupPatternText.setText(wakeup);
}
}
});
这应该满足您的要求:
private static String textContent = "";
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout(SWT.VERTICAL));
Text text = new Text(shell, SWT.BORDER);
text.addListener(SWT.FocusOut, new Listener()
{
@Override
public void handleEvent(Event e)
{
Text text = (Text) e.widget;
textContent = text.getText();
text.setText(textContent.substring(0, Math.min(10, textContent.length())) + "...");
}
});
text.addListener(SWT.FocusIn, new Listener()
{
@Override
public void handleEvent(Event e)
{
Text text = (Text) e.widget;
text.setText(textContent);
}
});
Button button = new Button(shell, SWT.PUSH);
button.setText("Lose focus");
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
它侦听焦点事件,并在可见的
字符串过长时截断该字符串
这就是它的样子:
重点:
无焦点:
代码不工作的原因如下:调用wakeupPatternText.setText(wakeup)时代码>从VerifyListener
中再次递归调用侦听器本身。如果您尝试了某项操作,请始终解释您尝试了什么。您是否可以打印任何日志并对其进行调试?如果您需要帮助,请向我们展示您编写的代码片段;导入部分应该是侦听器,它应该是其中文本的子字符串。@Baz我曾尝试添加一个修改侦听器,但主要问题是假设我有30个字符的文本,而我的文本框只支持添加15个字符。。但是,由于我的按钮与文本框绑定,所有按钮都被禁用,因为(..)被视为无效值。如果你没有收到我的问题,请不要投反对票。请留下评论…@Rajesh投反对票的原因很可能是,你没有发布任何代码,也没有解释你尝试了什么。我相信大多数人都理解你的要求。@Rajesh不客气。正如我所说的,如果人们看到你已经尝试了什么以及你到底被困在哪里,他们会更有动力去帮助你。