首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩形边框drawString

矩形边框drawString
EN

Stack Overflow用户
提问于 2012-04-10 02:46:35
回答 2查看 2.5K关注 0票数 1

我想使用图形绘制字符串,图形的矩形边框在字符串之外。

我已经这么做了:

代码语言:javascript
复制
     public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        FontMetrics fontMetrics = g2d.getFontMetrics();
        String str = "aString Test";

        int width = fontMetrics.stringWidth(str);
        int height = fontMetrics.getHeight();

        int x = 100;
        int y = 100;

        // Draw String
        g2d.drawString(str, x, y);
        // Draw Rectangle Border based on the string length & width
        g2d.drawRect(x - 2, y - height + 2, width + 4, height);
    }

我的问题是,我想用新行("\n")在之外用矩形边框绘制字符串

这是新行的代码:

代码语言:javascript
复制
     public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        FontMetrics fontMetrics = g2d.getFontMetrics();
        String str = "aString\nTest";

        int width = fontMetrics.stringWidth(str);
        int height = fontMetrics.getHeight();

        int x = 100;
        int y = 100;

        // Drawing string per line
        for (String line : str.split("\n")) {
            g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
        }
    }

有人能帮我解决这个问题吗?我感谢你的帮助和建议..。

最终代码

代码语言:javascript
复制
        int numberOfLines = 0;

        for (String line : str.split("\n")) {
            if(numberOfLines == 0)
                g2d.drawString(line, x, y);
            else
                g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
            numberOfLines++;
        }

        g2d.drawRect(x - 2, y - height * numberOfLines + 2, width + 4, height * numberOfLines);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-10 02:53:55

如果我理解正确的话,你的问题就是矩形的高度。

试着记录你有多少行(如:

代码语言:javascript
复制
int numberOfLines=0;

for (String line : str.split("\n")) {
    g2d.drawString(line, x , y + (numberOfLines * height));
    numberOfLines++;
}

g2d.drawRect(x - 2, y - height + 2, width + 4, height * numberOfLines);

这也改变了它如何计算出绘制字符串的y值。

像这样的东西有用吗?

票数 3
EN

Stack Overflow用户

发布于 2012-04-10 03:08:07

您还可以创建一个常规的JLabel对象,然后用html设置其文本,并包括

标签。例如,myLabel.setText("<html>aString<br>Test</html>");,然后向JLabel中添加一行边框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10082512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档