الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عمل برنامج باللغه العربيه في LWUIT وكيفيه تغيير لون النص والخلفيه

مغلق
بدأه clang في 3 سبتمبر 2010 · 25 رد · 2,348 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
3ds max2010 كتب:

الملف غير موجود أتمنى مراجعة الموضوع

السلام عليكم ورحمة الله وبركاته

مازالت اسئلتي على كيفية كتابة برنامج يحتوي على كتابة باللغة العربية

المشكلة مازالت

list.getParent().setRTL(true);

setRTL(true);

ليس موجود من ضمن القائمة الدوال

وهناك مشكلة اخرى كيف اغير لون خلفية كتابة النص ولون الخط

TextArea big = new TextArea("On February 24, 1815, the lookout at " + 
  "Notre-Dame de la Garde signalled the arrival of the three-master " + 
  "Pharaon, coming from Smyrna, Trieste and Naples.", 5, 20); 
f.addComponent(big); 
Style style2 =big.getStyle(); 
                style2.setBgColor(0xffffff); 
                style2.setFgColor( 0x000000); 

                big.setStyle(style2);

كيف اجبر البرنامج بأن يبدأ من يمين

والتحكم بلون خليفية النص و لون الخط

لان الخلفية دائما لونها ثابت

وشكرا

ونعتذر على كثر سألتي ،لا علم لي ان كثرت الاسئلة تزعجكم

التمس منكم العذر

تم تعديل هذه المشاركة بواسطة مهدي حجازي في 4 سبتمبر 2010 في 04:46 — السبب: تعديل العنوان

#2

بالنسبه للسوال الذى اقترحت عليكى فيه ان تستخدمى

 list.getParent().setRTL(true);

وانتى تقولين انها لا تعمل

فانا جربتها وهى تعمل بشكل جيد

ولك مثال على ذلك

MobileLWUIT.zip

وهذه صوره لعمليه التشغيل

phone2.png

قد تتسألين لماذا تكون الارقام على الجهه اليسرى ولا تكون على الجهه اليمنى

هذا من الـ netbeans لكن انا جربت هذا المثال على الموبيل والشكل كان على اليمين والارقام ايضا بالجهه اليمنى

وسوف أشاهد سوالك الاخر باذن الله

Software Developer
Mahmoudkelany.com


 

#3

ان شاء الله سوف اضع لك حل بواسطة استخدام ال ListCellRenderer

#4

ضعيها

UIManager.getInstance().getLookAndFeel().setRTL(true);

بعد

Display.init()

ان لم تعمل فعليك وضع الكود لأنه هذه هي الطريقه السليمه لعمل ذلك ولابد من وجود شيء يمنعها من اعلمل عندك.

بالنسبه للاوان هناك حالتان, الأولى selected style وهي عندما يكون ال focus على ال component والثانيه وهي unselected style وهي عكسها ويتم التعامل معها كالتالي:

big.getSelectedStyle().setBgColor(0xffffff); 

big.getSelectedStyle().setFgColor( 0x000000);
big.getUnselectedStyle().setBgColor(0xFF0000); 
big.getUnselectedStyle().setFgColor( 0x00FF00);

رجاء قومي بقراءه الكتاب المرفق مع LWUIT فهو يشرح معظم المشاكل التي تسألي عنها..

تم تعديل هذه المشاركة بواسطة مهدي حجازي في 3 سبتمبر 2010 في 02:24

#5

انا كنت استخدمت هذا الحل

لكن المشكله كانت متوفقه لدى فى ان الـ setBgColor بتاخذ integer value

طب ازاى اعطيها قيمه صحيحه وانا عندى ثلاث الوان red , green , blue

لكن انا مستغرب من الاكواد بتاعت الالوان

ازاى وافق على ان دا 0xffffff لون مع انه يحتوى على حروف

وكمان من أين تأتى بأكواد هذه الألوان

جزاكم الله خيرا يا اخ مهدى

انا كنت هاشد فى شعرى اللى هو مش موجود اصلا :lol:

هذه محاولتى

   TextArea big = new TextArea("On February 24, 1815, the lookout at Notre-Dame de la Garde signalled the arrival of the three-master Pharaon, coming from Smyrna, Trieste and Naples.", 5, 20);
        f.addComponent(big);
        Style style = new Style();
        style.setBgColor(200);
        big.setSelectedStyle(style);
        big.setUnselectedStyle(style);

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 3 سبتمبر 2010 في 03:07

Software Developer
Mahmoudkelany.com


 

#6

السلام عليكم ورحمة الله وبركاته

post-17136-005076200 1283487216_thumb.pn

ارفقت لكم صورة التي استغربت منها، لان البرنامج يعمل على NetBeans

ولا يعمل Java ME Platform SDK 3.0

البرنامج الذي نسخته فقط اصبح له ترجمه لكن لم اعمل

سأحاول كتابة البرنامج من جديد قد يكون سبب عدم وجود ملف خاص له

لان الملف لونه احمر ليس مثل باقي الملفات

المرفقات
outerror.png

تم تعديل هذه المشاركة بواسطة clang في 3 سبتمبر 2010 في 07:40

#7
Mahmoud Kelany كتب:

انا كنت استخدمت هذا الحل

لكن المشكله كانت متوفقه لدى فى ان الـ setBgColor بتاخذ integer value

طب ازاى اعطيها قيمه صحيحه وانا عندى ثلاث الوان red , green , blue

لكن انا مستغرب من الاكواد بتاعت الالوان

ازاى وافق على ان دا 0xffffff لون مع انه يحتوى على حروف

وكمان من أين تأتى بأكواد هذه الألوان

جزاكم الله خيرا يا اخ مهدى

انا كنت هاشد فى شعرى اللى هو مش موجود اصلا :lol:

هذه محاولتى

   TextArea big = new TextArea("On February 24, 1815, the lookout at Notre-Dame de la Garde signalled the arrival of the three-master Pharaon, coming from Smyrna, Trieste and Naples.", 5, 20);
        f.addComponent(big);
        Style style = new Style();
        style.setBgColor(200);
        big.setSelectedStyle(style);
        big.setUnselectedStyle(style);

بالنسبة للالوان داخل البرنامج

صحيح انه يأخذ اللون من نوع int

لكن هذا اللون عبارة عن 3 الوان

يعتبر كل لون يتغير تدريجه الى 255 لون وهو يعادل ff بالنسبة لنظام العد Hex

لذلك اذا اردنا لون ابيض يكون الرقم

0xffffff

واذا كان لون اسود

0x000000

كل لون عباره عن حرفين

او خانتين بتعبير اصح

نضع رمز 0x حتى نرمز الى الرقم بنظام الهيك

ان شاء الله اكون قد افدتكم بالمعلومة

اختكم

clang

#8

post-17136-016982900 1283488419_thumb.pn

لماذا يظهر لدي انه يوجد خطأ

المرفقات
outerror.png
#9
clang كتب:

بالنسبة للالوان داخل البرنامج

صحيح انه يأخذ اللون من نوع int

لكن هذا اللون عبارة عن 3 الوان

يعتبر كل لون يتغير تدريجه الى 255 لون وهو يعادل ff بالنسبة لنظام العد Hex

لذلك اذا اردنا لون ابيض يكون الرقم

0xffffff

واذا كان لون اسود

0x000000

كل لون عباره عن حرفين

او خانتين بتعبير اصح

نضع رمز 0x حتى نرمز الى الرقم بنظام الهيك

ان شاء الله اكون قد افدتكم بالمعلومة

اختكم

clang

جزاكم الله كل خير على المعلومه

انا بردوا بقول الشكل مش غريب لكن مش 8 خانات :wacko: :wacko:

شكرا لكى اختى الكريمه

لكن كيف يتم تحويل 0x000000 الى قيمه صحيحه كعمليه برمجه مش غريبه شويه ؟ ان الكومبيلر لم يعترض ؟لانها تحتوى على حروف وارقام

هذه الصوره من داخل الnerbeans وهى تعمل جيدا

post-217802-018766800 1283503955_thumb.p

مش عارف ليه عندك مش شغاله كويس

هاحاول اشتغل على Java™ ME Platform SDK

ونشوف ايه الخطأ

المرفقات
LWUITCode.png

Software Developer
Mahmoudkelany.com


 

#10

انت تستعملي نسخه قديمه من LWUIT. لاحظي ان JavaME SDK تحتوي على نسخه قديمه من LWUIT، لا تستعمليها واستعملي أخر نسخه وهي LWUIT 1.4

#11

انا نزلت البرنامج بتاع

Java™ ME Platform SDK

واشتغلت عليه وهذه هى النتيجه

post-217802-076969200 1283511546_thumb.p

تقريبا زى ما قال اخونا مهدى

انك بتستخدمى نسخه قديمه

هذه هى النسخه الجديده 1.4

LWUIT.zip

اضيفى ملف الـ jar الى المشروع وان شاء الله تعمل كويس

بالتوفيق

المرفقات
sdk.png

Software Developer
Mahmoudkelany.com


 

#12

السلام عليكم ورحمة الله وبركاته

سأحاول نسخ الملف المرفق مع علما انني من قبل فترة قليل تم وضع المترجم

ان شاء الله تنحج المحاوله

لكن لدي سؤال ،

أليس مترجم واحد لكلا البرنامجين ؟؟؟

**********************

المترجم لا يرى الاحرف احرف بصفتها الحرفية ،بل يراها كرقم

لان نظام العد السداسي او المطلق عليه HEX Number

يحتوي على احرف لماذا ؟؟؟

السبب

لان الخانه الواحد تحتوي على 16 شكل ، مثلما في النظام العشري او ما يطلق عليه Decimal number تحتوي الخانه على 10 اشكال وهم من شكل صفر الى الشكل 9

لذلك في نظام الهيكس من شكل صفر الى شكل تسعه معرفه شكله لكن شكل 10 هذا اخذ خانتين بالنظام العشري وفي نظام الهيكس يكون الشكل a

0=0

1=1

2=2

3=3

4=4

5=5

6=6

7=7

8=8

9=9

10=a

11=b

12=c

13=d

14=e

15=f

لذلك المترجم يرى الاحرف الارقام

لكن اذا بدأت الرقم بحرف دون وضع (0x) سيظهر لكم خط

ان شاء الله اتضحه الامر

اذا لا

حياك الكويت اشرح لك بالتفصيل

#13

السلام عليكم ورحمة الله وبركاته

مازالت المشكلة نفسه على رغم اضفت المكتبة المرفقه

:(

هل السبب انني اعمل على نظام

windows 7

#14

جربتي Clean & Build ؟؟

ممكن ترفقي المشروع بالكامل؟؟

#15
clang كتب:

السلام عليكم ورحمة الله وبركاته

المترجم لا يرى الاحرف احرف بصفتها الحرفية ،بل يراها كرقم

لان نظام العد السداسي او المطلق عليه HEX Number

يحتوي على احرف لماذا ؟؟

لذلك المترجم يرى الاحرف الارقام

لكن اذا بدأت الرقم بحرف دون وضع (0x) سيظهر لكم خط

ان شاء الله اتضحه الامر

وعليكم السلام

انا فاهم كدا لكن انا اقصد ازاى المترجم يفهم ان a =10

كدا يعنى دا القصد

وازاى يعتبرها رقم :wacko: :wacko: :wacko:

هذا ما اقصده

لكن شرحك كويس وجميل جزاكى الله خيرا

clang كتب:

السلام عليكم ورحمة الله وبركاته

مازالت المشكلة نفسه على رغم اضفت المكتبة المرفقه

:(

هل السبب انني اعمل على نظام

windows 7

لا انا ايضا اعمل على windows 7

وشغال كويس جدا

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 3 سبتمبر 2010 في 23:28

Software Developer
Mahmoudkelany.com


 

#16

دا فيديو عمل مشروع بالـ LWUIT باستخدام الـ Java™ ME Platform SDK

يمكنك تحميله ومشاهدته

وشوفى هل فيه خطوه غلط عندك ولا لا

فيديو لمده 2:11 دقيقه

ويشرح كيفيه جعل الـ list على اليمين

http://www.mediafire.com/?6rajbboamcvzbjw

بالتوفيق

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 3 سبتمبر 2010 في 23:38

Software Developer
Mahmoudkelany.com


 

#17

السلام عليكم ورحمة الله وبركاته

اشتغل القائمة

و ذلك بعد حذف المكتب القديمه لانها كان تؤثر على المكتبة الجديد مع اني حاولت الدخول الى اداخل ملفات المترجم واعمل نسخ على الملف لكن لم تنفع الطريق

ايضا تعدل البرنامج اصبحت الجملة جيدة

post-17136-089729400 1283558114_thumb.pn

لكن عند حميل البرنامج على جهاز الهاتف لا تظهر الجملة سريعا ، او بعد الضغط على الشاشة ( اقصد زر لان جهازي يعتمد على لمس فقط )

بالنسبة ان كيف المترجم يفهم انه a رقم وليس حرف

المترجم يفهم هذا الشكل يحتوي على القمية معين ،لكن نحن نراها حرف وليس رقم

مثل في حال تعدي حد المسموح

overload

نحن نراها لكن المترجم لا يرى ذلك

المرفقات
outerror.png

تم تعديل هذه المشاركة بواسطة clang في 4 سبتمبر 2010 في 03:04

#18

جيد انها عملت..

بعض الملاحظات الرجاء التقيد بها, اختاري في المره القدامه عنوان يناسب الاسئله التي تريدين طرحها..لا فائده من تكرار نفس العنوان. ثانيا, قومي بترشيح الاجابات التي تفيدك. اذا عندك اسئله اخرى اكتبيها في موضوع جديد. عند مواجهه مشكله الرجاء ارفاق الكود وليس الصور حتى نتمكن من تنفيذ البرنامج عندنا..الصور لا تفيد في كثر من الحالات, هذه المره استطعت ان اخمن انك تعملين على نسخه قديمه, المره القادمه لا أظن ذلك..

2
#19

السلام عليكم ورحمة الله وبركاته

لكم كل الشكر والتقدير على المتابع

انا الجأ الى وضع الصور حتى يتضح لكم الامر اي يكون الخطأ ، لانه خطأ في المترجم

اما اذا كان خطأ منقطي اضع الكود

 list = new List();
        list.addItem("الاول");
        list.addItem("الثاني");
        list.addItem("الثالث");
        list.addItem("الرابع");
        list.addItem("الخامس");
        list.addItem("السادس");
        frame.addComponent(list);
        list.getParent().setRTL(true);
        frame.addCommand(exitCommand);
        frame.addCommand(okCommand);
        frame.setCommandListener(this);

    //    Command exitCommand = new Command("Exit");

   frame.addCommand(exitCommand);
   frame.setCommandListener(this);

في هذا الكود كما هو موجود سابقا يعمل بشكل المطلوب لكن كما هو ظاهر بالصورة السابق الترقيم على جانب الايسر

هل توجد طريق الغي الترقيم

بحيث اكتب الرقم باللغة العربية مع الجملة المطلوبه

اما بالنسبة لصندوق النص

هل من الممكن تغيير الخط من ناحية الحجم و نوع؟

اذا كانت الاجابة نعم

سأكمل قراءت الملف المرفق مع البرنامج

اذا كانت الاجابة لا

ما هو الحل

وشكرا

تم تعديل هذه المشاركة بواسطة clang في 4 سبتمبر 2010 في 07:18

#20
 big.getStyle().setFont(f);

مع اعطاء f انه كائن من نوع Font

Software Developer
Mahmoudkelany.com


 

#21

سلام :

هذا الكود يوضح استخدام ListCellRenderer حاولت كتابته بأبسط طريقة ممكنة للتوضيح

import com.sun.lwuit.Component;
import com.sun.lwuit.Form;
import com.sun.lwuit.Label;
import com.sun.lwuit.List;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.layouts.BorderLayout;
import com.sun.lwuit.list.ListCellRenderer;
import java.util.Vector;

/**
 *
 * @author MErsan
 */
public class TestForm extends Form implements ListCellRenderer, ActionListener {

    List mainList;

    public TestForm() {
        setLayout(new BorderLayout());
        setScrollable(false);

        Vector listItems = new Vector(10);
        listItems.addElement("الاول");
        listItems.addElement("الثاني");
        listItems.addElement("الثالث");
        listItems.addElement("الرابع");
        listItems.addElement("الخامس");
        listItems.addElement("السادس");
        listItems.addElement("السابع");
        listItems.addElement("الثامن");
        listItems.addElement("التاسع");
        listItems.addElement("العاشر");

        mainList = new List(listItems);
        mainList.setListCellRenderer(this);
        mainList.addActionListener(this);
        mainList.setSelectCommandText("اختيار");
        mainList.setFixedSelection(List.FIXED_NONE_CYCLIC);

        addComponent(BorderLayout.CENTER, mainList);

    }

    public void actionPerformed(ActionEvent evt) {
        if (evt.getSource() == mainList) {
            System.out.println((String) mainList.getSelectedItem());
        }
    }

    public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
        String text = (String) value;

        Label label = new Label(index + ": " + text);
        label.setAlignment(Label.RIGHT);
        label.getStyle().setBgTransparency(0);
        if (isSelected) {
            label.getStyle().setFgColor(0xFF000);
        } else {
            label.getStyle().setFgColor(0x00000);
        }
        return label;
    }

    public Component getListFocusComponent(List list) {
        Label label = new Label();
        label.getStyle().setBgColor(0x55555);
        return label;
    }
}
#22

السلام عليكم اساتذتي الاعزاء وشكرا على هذا الموضوع الجميل

الاخ محمد انا جربت مثالك الجميل لكنه لا تظهر نتائج وسوف ارفق الخطأ الذي يظهر وللمعلومة يظهر عندي خط برتقالي تحت Vector

هذا شيء اما الشي الاخر بالنسبة ل ListCellRenderer او LWUITM لو اردنا ان نعمل خلفية اما لون او صور كيف؟؟

post-233430-25060_thumb.jpg

post-233430-8388_thumb.jpg

تم تعديل هذه المشاركة بواسطة albakri في 5 سبتمبر 2010 في 08:25

#23

السلام عليكم ورحمة الله وبركاته

لقد جربت البرنامج والحمدلله نجحت المحاوله

لكن عندي سؤال

كيف استطاع البرنامج الوصول الى اخر دالتين على الرغم عدم استعاءهما؟؟؟

وشكرا

اليكم البرنامج الذي جربته

import com.sun.lwuit.Command;
import com.sun.lwuit.Component;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.Label;
import com.sun.lwuit.List;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.layouts.BorderLayout;
import com.sun.lwuit.list.ListCellRenderer;
import java.util.Vector;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

/**
 *
 * @author MErsan
 */
public class TestForm2 extends MIDlet implements ListCellRenderer, ActionListener {

    List mainList;
    Form frame;
    Command exitcmd;
    public TestForm2() {

    }

    public void actionPerformed(ActionEvent evt) {
        if (evt.getSource() == mainList) {
            System.out.println((String) mainList.getSelectedItem());
        }
        else if (evt.getCommand()==exitcmd)
        {
              notifyDestroyed();

        }
    }

    public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
        String text = (String) value;

        Label label = new Label(/*index + ": " + */text);
        label.setAlignment(Label.RIGHT);
        label.getStyle().setBgTransparency(0);
        if (isSelected) {
            label.getStyle().setFgColor(0xFF000);
        } else {
            label.getStyle().setFgColor(0x00000);
        }
        return label;
    }

    public Component getListFocusComponent(List list) {
        Label label = new Label();
        label.getStyle().setBgColor(0x55555);
        return label;
    }

    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    protected void pauseApp() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    protected void startApp(){// throws MIDletStateChangeException {
        Display.init(this);
         frame = new Form("test");
        frame.setLayout(new BorderLayout());
        frame.setScrollable(false);
        exitcmd = new Command("exit");
        Vector listItems = new Vector(10);
        listItems.addElement("الاول");
        listItems.addElement("الثاني");
        listItems.addElement("الثالث");
        listItems.addElement("الرابع");
        listItems.addElement("الخامس");
        listItems.addElement("السادس");
        listItems.addElement("السابع");
        listItems.addElement("الثامن");
        listItems.addElement("التاسع");
        listItems.addElement("العاشر");

        mainList = new List(listItems);
        mainList.setListCellRenderer(this);
        mainList.addActionListener(this);
        mainList.setSelectCommandText("اختيار");
        mainList.setFixedSelection(List.FIXED_NONE_CYCLIC);

        frame.addComponent(BorderLayout.CENTER, mainList);
        frame.addCommand(exitcmd);
        frame.addCommandListener(this);
        frame.show();
//        throw new UnsupportedOperationException("Not supported yet.");
    }
}
#24

لدي ملاحظة

كلمة ( اختيار) لم تظهر ، لماذا ؟؟؟

post-17136-049839800 1283666523_thumb.pn

*****************

بالنسبة الى سؤال albakri

اذا اكملت اخر الرسالة التنبية لرايت السبب انه لا توجد المكتبة الاساسية للعمل وهي MIDlet

وشكرا

المرفقات
outerror.png
#25

شكرا على الرد clang وحلت المشكله .

بقي سؤالي على الخلفية اما لون او صورة ؟؟؟؟

هذا الموضوع مغلق.

مواضيع مشابهة