【问题标题】:Swing GUI: drawString - How to set the font size of the String being displayed?Swing GUI:drawString - 如何设置正在显示的字符串的字体大小?
【发布时间】:2015-06-10 05:19:40
【问题描述】:

我们都知道drawString方法可以这样使用:

import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class Driver {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Frame Heading");
        frame.setSize(1000,500);
        myComponent comp = new myComponent();
        frame.add(comp);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

class myComponent extends JComponent {
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.drawString("Hello World", 300, 300);
    }
}

但是,我们如何调整正在显示的字符串的字体大小?我想让它变大。

【问题讨论】:

    标签: java swing font-size paintcomponent


    【解决方案1】:

    我们如何调整正在显示的字符串的字体大小?

    您可以根据当前字体派生出新的字体:

    public void paintComponent(Graphics g) 
    {
        super.paintComponent(g); // don't forget this.
        g.fillRect(0, 0, getWidth(), getHeight()); // make sure the background is cleared
    
        Font font = g.getFont().deriveFont( 20.0f );
        g.setFont( font );
        g.drawString(...);
    }
    

    绘制字符串不需要 Graphics2D 对象。

    或者,您可以使用以下方法自定义对象,而不是在 paintComponent() 方法中强制字体为特定大小:

    MyComponent comp = new MyComponent();
    comp.setFont( comp.getFont().deriveFont( 20.0f );
    

    在这种情况下,您使用当前的绘画代码。

    此外,类名应以大写字符开头,您的类应为“MyComponent”。

    【讨论】:

    • super.paintComponent(g); 为什么是这个二手伴侣?
    • 在一般情况下,您习惯于调用组件的默认绘制代码。例如,JPanel 只会绘制面板的背景。当您扩展 JComponent 时,是否使用它可能并不重要,但始终这样做是一个好主意。阅读Custom Painting 上的 Swing 教程以获取更多信息和示例。
    【解决方案2】:
    class myComponent extends JComponent {
        public void paintComponent(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;
            int fontSize = 20;
            Font f = new Font("Comic Sans MS", Font.BOLD, fontSize);
            g2.setFont(f);
            g2.drawString("Hello World", 300, 300);
        }
    }
    

    您可以更改样式、大小和字体,因为您可能不想使用 Comic Sans。

    另见Graphics#setFont

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-01
      • 2019-06-20
      • 2018-01-09
      • 2011-03-04
      • 1970-01-01
      • 2011-06-29
      • 2019-12-23
      • 1970-01-01
      相关资源
      最近更新 更多