簡體   English   中英

如何在Graphics上繪制帶背景的String?

[英]How to draw String with background on Graphics?

我用Graphics.drawString繪制文本,但我想用矩形背景繪制字符串。

在繪制文本之前使用Graphics.fillRectGraphics2D.fill

這是一個例子:

import java.awt.*;
import java.awt.geom.Rectangle2D;
import javax.swing.*;

public class FrameTestBase extends JFrame {
    public static void main(String args[]) {
        FrameTestBase t = new FrameTestBase();
        t.add(new JComponent() {
            public void paintComponent(Graphics g) {
                String str = "hello world!";
                Color textColor = Color.WHITE;
                Color bgColor = Color.BLACK;
                int x = 80;
                int y = 50;

                FontMetrics fm = g.getFontMetrics();
                Rectangle2D rect = fm.getStringBounds(str, g);

                g.setColor(bgColor);
                g.fillRect(x,
                           y - fm.getAscent(),
                           (int) rect.getWidth(),
                           (int) rect.getHeight());

                g.setColor(textColor);
                g.drawString(str, x, y);
            }
        });

        t.setDefaultCloseOperation(EXIT_ON_CLOSE);
        t.setSize(400, 200);
        t.setVisible(true);
    }
}

在此輸入圖像描述

建議:

  • 使用JLabel
  • 通過setOpaque(true);將其opaque屬性設置為true setOpaque(true);
  • 通過setForeground(myForegroundColor);設置其前景色setForeground(myForegroundColor);
  • 然后通過setBackground(myBackgroundColor);設置其背景顏色setBackground(myBackgroundColor);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM