اذهب إلى المحتوى
  • 0

كيف أغيّر نوع الخط عند الضغط عليه في جافا؟

OsamaSaif

السؤال

Recommended Posts

  • 0

يتم ذلك عن طريق الحدث mousePressed من الصف MouseAdapter حيث يتم إعادة تعريف الحدث mousePressed عن طريق عمل extends للصف MouseAdapter.

أنشئ صف وليكن مثلًا MainClass وقم بإضافة MouseListener لكي يتم الاستماع للحدث mousePressed عند الضغط.

المثال التالي يوضح كيفية إضافة mouseListener لـ Applet في الدالة init حيث سيتم الاستماع وتنفيذ الحدث mousePressed عند الضغط على Applet.

لإنشاء خط Font أنشئ كائن object من نوع Font وقم بتمرير المعاملات name, style, size.

public void init() {
    f = new Font("Dialog", Font.PLAIN, 12);
    msg = "Dialog";
    setFont(f);
    addMouseListener(new MyMouseAdapter(this));
  }

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

import java.applet.Applet;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

الصف MainClass:

public class MainClass extends Applet {
  int next = 0;

  Font f;

  String msg;

  public void init() {
    f = new Font("Dialog", Font.PLAIN, 12);
    msg = "Dialog";
    setFont(f);
    addMouseListener(new MyMouseAdapter(this));
  }

  public void paint(Graphics g) {
    g.drawString(msg, 4, 20);
  }
}

الآن أنشئ صف MyMouseAdapter واجعله يرث من MouseAdapter.

في الدالة MousePressed حدّد ما تريد عمله عند الضغط على النص مثلًا يتغير نوع الخط كما في المثال التالي:

class MyMouseAdapter extends MouseAdapter {
  MainClass sampleFonts;

  public MyMouseAdapter(MainClass sampleFonts) {
    this.sampleFonts = sampleFonts;
  }

  public void mousePressed(MouseEvent me) {
    sampleFonts.next++;
    switch (sampleFonts.next) {
    case 0:
      sampleFonts.f = new Font("Dialog", Font.PLAIN, 12);
      sampleFonts.msg = "Dialog";
      break;
    case 1:
      sampleFonts.f = new Font("DialogInput", Font.PLAIN, 12);
      sampleFonts.msg = "DialogInput";
      break;
    case 2:
      sampleFonts.f = new Font("SansSerif", Font.PLAIN, 12);
      sampleFonts.msg = "SansSerif";
      break;
    case 3:
      sampleFonts.f = new Font("Serif", Font.PLAIN, 12);
      sampleFonts.msg = "Serif";
      break;
    case 4:
      sampleFonts.f = new Font("Monospaced", Font.PLAIN, 12);
      sampleFonts.msg = "Monospaced";
      break;
    }
    if (sampleFonts.next == 4)
      sampleFonts.next = -1;
    sampleFonts.setFont(sampleFonts.f);
    sampleFonts.repaint();
  }
}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...