• 0

كيف أطبّق لون على نصوص String في جافا؟

أريد جعل النصوص في تطبيق جافا الذي أعمل عليه أن تأخذ لون بشكل متدرج كيف أقوم بذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

أنشئ GradientPaint كما في الشيفرة التالية وباستخدام fontMetrics استدعي الدالة stringWidth ومرر لها النص الذي تريد كتابته:

 GradientPaint gp = new GradientPaint(
                            30.0f, 50.0f,
                            Color.blue,
                            fontMetrics.stringWidth("Hello!"),
                            fontMetrics.getHeight(),
                            Color.red);

وقم باستيراد المكتبات التالية:

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

اجعل الصف الذي تعمل عليه يرث من الصف JFrame وقم بتحديد خصائص الواجهة.

أعد تعريف الدالة paint وأنشئ كائن object من نوع Graphics ثم قم باستدعاء الدالة setPaint ومرر لها الكائن GrasientPaint.

أخيرًا استدعي الدالة drawString واكتب النص الذي تريده.

public void paint(Graphics g) {
    Graphics2D g2D = (Graphics2D) g;
    int w = getSize().width;
    int h = getSize().height;

    g2D.setFont(font);
    GradientPaint gp = new GradientPaint(
                            30.0f, 50.0f,
                            Color.blue,
                            fontMetrics.stringWidth("Hello!"),
                            fontMetrics.getHeight(),
                            Color.red);             
    g2D.setPaint(gp);
    g2D.drawString("Hello!", 20,200);                                                 


  }

TextPaint.thumb.png.55669ce10b6d17469c3d

المثال التالي يوضح طريقة تطبيق GradienPaint على نص Text:

public class StringGraidentPaint extends JFrame {
  public StringGraidentPaint() {
    getContentPane().add(new DrawingCanvas());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500, 500);
    setVisible(true);
  }

  public static void main(String arg[]) {
    new StringGraidentPaint();
  }
}

class DrawingCanvas extends JPanel {
  Font font = new Font("Dialog", Font.BOLD, 40);
  FontMetrics fontMetrics;
  
  DrawingCanvas() {
    setSize(300, 300);
    setBackground(Color.white);
    fontMetrics = getFontMetrics(font);
  }

  public void paint(Graphics g) {
    Graphics2D g2D = (Graphics2D) g;
    int w = getSize().width;
    int h = getSize().height;

    g2D.setFont(font);
    GradientPaint gp = new GradientPaint(
                            30.0f, 50.0f,
                            Color.blue,
                            fontMetrics.stringWidth("Hello!"),
                            fontMetrics.getHeight(),
                            Color.red);             
    g2D.setPaint(gp);
    g2D.drawString("Hello!", 20,200);                                                 


  }
}

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن