在一定量的像素之后剪切一个字符串

时间:2014-08-03 09:12:18

标签: java swing jframe jpanel substring

我在JPanel中有2 JFrame个对象,我想在1个面板中显示文本,在另一个面板中显示图片。但是当文字太长时间它消失在图像后面时,我不希望这种情况发生,但我也不希望这个词被分开,所以如果这个词对于其余部分来说太长了它应该转到下一行。

顺便说一句,我使用paintcomponent绘制文本,我使用g.drawstring。

我的代码如下所示:

        StringBuilder sb = new StringBuilder($question.getQuestion());

        /* After every 30 characters place a \n character, here is where the string will go to the nextline and write the rest of the question there */
        int x = 0;
        while ((x = sb.indexOf(" ", x + 30)) != -1) {
            sb.replace(x, x + 1, "\n");
        }

        /* Reset x for drawing purposes with a decent offset */
        x = 0;

        /* Split the string on \n now */
        for (String line : sb.toString().split("\n")){
            g.drawString(line, 20, 120 + (x*75)); /* Draw the part of the question, x*75 is used for spacing between the substrings of the question */
            x++; /* Increment x for drawing purposes with a decent offset */
        }

但是这仍然不起作用,如果它是一个非常长的词,它不能分割出来。 编辑:我发现问题是我正在寻找一个' ',但如果该空间不会很快发生,它将继续将字符写在另一个jpanel后面。我该如何解决这个问题?

有什么想法吗?

0 个答案:

没有答案