如何在矩形中显示字符串?(How to display string in a rectangle?)

优质
小牛编辑
125浏览
2023-12-01

问题描述 (Problem Description)

如何在矩形中显示字符串?

解决方案 (Solution)

下面的示例演示如何使用drawRect()方法在每个字符周围绘制一个矩形来显示矩形中的每个字符。

import java.awt.*;
import javax.swing.*;
public class Main extends JPanel {
   public void paint(Graphics g) {
      g.setFont(new Font("",0,100));
      FontMetrics fm = getFontMetrics(new Font("",0,100));
      String s = "message";
      int x = 5;
      int y = 5;
      for (int i = 0; i < s.length(); i++) {
         char c = s.charAt(i);
         int h = fm.getHeight();
         int w = fm.charWidth(c);
         g.drawRect(x, y, w, h);
         g.drawString(String.valueOf(c), x, y + h);
         x = x + w;
      }
   }
   public static void main(String[] args) {
      JFrame frame = new JFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setContentPane(new Main());
      frame.setSize(500, 700);
      frame.setVisible(true);
   }
}

结果 (Result)

上面的代码示例将产生以下结果。

Each character is displayed in a rectangle. 

以下是在矩形中显示字符串的另一个示例示例。

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JFrame;
class MyCanvas extends JComponent {
   String s = "message";
   int x = 45;
   int y = 45;
   public void paint(Graphics g) {
      g.drawRect (10, 10, 200, 200);
      g.setColor(Color.red);
      g.drawString(s, x, y);
   }
}
public class Panel {
   public static void main(String[] a) {
      JFrame window = new JFrame();
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      window.setBounds(30, 30, 300, 300);
      window.getContentPane().add(new MyCanvas());
      window.setVisible(true);
   }
}

上面的代码示例将产生以下结果。

Each character is displayed in a rectangle.