بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه ،،
أولا : أضف class المسطرة التالي إلى مشروعك .
package rohailiroler;
import java.awt.Graphics;
import java.awt.font.NumericShaper;
import java.awt.Toolkit;
public class ruler extends javax.swing.JPanel {
public ruler() {
this.setBackground(java.awt.Color.WHITE);
shaper = NumericShaper.getShaper(NumericShaper.ARABIC);
}
public int getresdpcm(){
//دقة الشاشة ( عدد النقاط في البوصة )
int resdpi = Toolkit.getDefaultToolkit().getScreenResolution();
//حساب عدد النقاط في السنتيمتر
int resdpcm = (int) (resdpi / 2.54);
return resdpcm;
}
private String converttoarabicnumber(String s){
//بناء مصفوفة حروف مكونة من طول النص s
char[] a = new char[s.length()];
//وضع حروف (أرقام) النص s في المصفوفة a
s.getChars(0, s.length(), a, 0);
//تحويل الأرقام من الشكل الإنجليزي إلى الشكل العربي
shaper.shape(a, 0, a.length);
return new String(a);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int resdpcm = this.getresdpcm();
int i = 1;
//رسم الشرطات وكتابة الأرقام حتى الوصول إلى نهاية اللوحة jpanel باستخدام الشرط التالي
while (this.getWidth() - resdpcm * i > 0){
//رسم شرطات المسطرة من اليمين لليسار
g.drawLine(this.getWidth() - resdpcm * i, 0, this.getWidth() - resdpcm * i, resdpcm / 2);
//تحويل أرقام المسطرة إلى نص en
String en = new Integer(i).toString();
//تحويل الأرقام الإنجليزية إلى عربية باستخدام الدالة converttoarabicnumber
String ar = this.converttoarabicnumber(en);
//كتابة أرقام المسطرة
g.drawString(ar, this.getWidth() - resdpcm * i, resdpcm);
i++;
}
}
private NumericShaper shaper;
}ثانيا : أنشئ كائن من class المسطرة كالتالي ثم إضافته إلى شمال اللوحة mainPanel ذات التخطيط BorderLayout .
mainPanel.setLayout(new java.awt.BorderLayout()); ruler r = new ruler(); //اختيار الحجم المفضل للمسطرة بحيث يكون ارتفاعها واحد سنتيمتر //أما العرض وضعته صفر لأنه غير مهم لأن BorderLayout سوف تمدد المسطرة إلى نهاية mainPanel r.setPreferredSize(new java.awt.Dimension(0, r.getresdpcm())); mainPanel.add(r, java.awt.BorderLayout.NORTH);

