Java 示例 - 在矩形中显示文本

  • 问题描述

    如何在矩形中显示字符串?
  • 解决方案

    下面的示例演示如何通过使用 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);
       }
    }
    
  • 结果

    上面的代码示例将产生以下结果。
    
    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.