Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当文本超过文本大小时,如何显示点?_Java_Swt - Fatal编程技术网

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不客气。正如我所说的,如果人们看到你已经尝试了什么以及你到底被困在哪里,他们会更有动力去帮助你。