PDA

View Full Version : جاوا و فارسی



zeelog
پنج شنبه 17 خرداد 1386, 12:10 عصر
سلام
من تازه کار با جاوا رو شروع کردم
من یک برنامه ساده نوشتم که موقع اجرا در کنتر لهای ان انگلیسی به خوبی تایپ میشه ولی نمی تونم فارسی تایپ کنم و فقط مربع های خالی نمایش میده
و همین طور یک نمونه برنامه ساده پیغام فارسی از همین سایت رو که اجرا کردم حروف فارسی رو به صورت مجزا نماش میدهد
ضمنا من چون از دبیان ۴.۰ استفاده میکنم برنامه ها رو با javac کامپایل میکنم و با java اجرا
که اینها متعلق به eclips هستند ورژن جاوا رو هم 1.4 هست
ضمنا چرا هیچ مرجعی واسه فارسی نویسی توی سایت نیست

pooyanm
جمعه 18 خرداد 1386, 06:36 صبح
سلام
شما برای نمونه با
setFont(new Font"Arial", style, size));
و یا
setFont(Font.createFont(int fontFormat, File fontFile)) یک فونت یونیکد را به component مورد نظر اختصاص بده اگر به این روش مشکل برطرف نشد یک نگارش 1.5 یا 1.6 را به کار بگیر من با 1.6 (و همین طور اگر درست خاطرم باشه با 1.4.2) تاکنون مشکلی که با یکی از دو دستور بالا برطرف نشه مواجه نبودم.

zeelog
جمعه 18 خرداد 1386, 11:36 صبح
import javax.swing.*;
import java.awt.*;
public class fonts {
/**
* @param args
*/
public static void main(String[] args) {
JFrame frame = new JFrame("برنامه من");
JButton button = new JButton("دگمه");
button.setFont(new Font("Arial",Font.ITALIC,12));
frame.getContentPane( ).add(new JScrollPane(button));
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize(500, 200);
frame.setVisible(true);
}
}
ممنون از پاسختون
این کد من هست
که title فریم بدرستی فارسی مینویسه اما اون دگمه این طور نیست

pooyanm
جمعه 18 خرداد 1386, 13:16 عصر
سلام
به نظر می رسه فونت پیش گزیده یونیکد را پشتیبانی نمی کنه برخلاف نوار عنوان که از فونت پیش گزیده سیستم عامل (با پشتیبانی یونیکد) استفاده می کنه. شما کدهای زیر را جایگزین setFont کن مشکل کاملا برطرف می شه مسیر را هم با مسیر هر فونت یونیکد در سیستم خوتون باید جایگزین کنی.


try {
button.setFont(Font.createFont(
Font.TRUETYPE_FONT,
new java.io.File("e:\\windows\\fonts\\arial.ttf")
).deriveFont(Font.PLAIN, (float)(16)));
} catch ( Exception e ) {
e.printStackTrace();
}

unhandled_event
جمعه 18 خرداد 1386, 16:02 عصر
سلام
منم مبتدیم و در آینده نزدیک احتمالا به همین مشکل برخواهم خورد :متفکر:
من برنامه شما رو همونطوری اجرا کردم و همونطوری که گفتید مشکل داشت اما این کار رو با توجه به سرچ گوگل کردم درست شد
گرچه من ویندوز ایکس پی دارم و نه لینوکس:



button.setFont(new Font("Arial Unicode",Font.ITALIC,20));

zeelog
جمعه 18 خرداد 1386, 17:48 عصر
java.lang.UnsupportedOperationException
at gnu.java.awt.peer.gtk.GtkToolkit.createFont(libgcj .so.70)
at java.awt.Font.createFont(libgcj.so.70)
at fonts.main(fonts.java:12) من این
try {
button.setFont(Font.createFont(
Font.TRUETYPE_FONT,
new java.io.File("/media/xp/windows/fonts/arial.ttf")
).deriveFont(Font.PLAIN, (float)(16)));
} catch ( Exception e ) {
e.printStackTrace();
} رو وارد کردم که خطای بالایی رو داد

pooyanm
جمعه 18 خرداد 1386, 21:15 عصر
همون setFont(new Font("Arial", style, size)); رو با یک نام فونت یونیکد از دبیان استفاده کن

zeelog
شنبه 19 خرداد 1386, 14:46 عصر
سلام دوست عزیز
فونت های فارسی روی سیستم من Homa, freefarsi هست
اما هنکام تنظیم با آنها متون در کنترلهای awt بدرستی نشان داده می شود اما کنترلهای swing حروف را بصورت مجزا نمایش مدهند , در awt فقط انگلیسی قابل تایپ است و در swing
به جای حروف فارسی مربع نمایش میدهد
ضمنا روش createfont چه مشکلی دارد ؟

pooyanm
شنبه 19 خرداد 1386, 22:23 عصر
در این مورد createFont در لینوکس کار نمی کنه شما باید یک فونت یونیکد (روی اون فارسی ها زیاد نمی شه حساب کرد) مانند فونت title bar که با اون فارسی را بدرستی نمایش می ده را به کار بگیری.

zeelog
یک شنبه 20 خرداد 1386, 14:35 عصر
واسه گرفتن نوع فونت titlebar از getfont چه شی باید استفاده کنم frame ?

zeelog
سه شنبه 22 خرداد 1386, 01:57 صبح
مشکل از jre دبیان چون زوزه رو نصب کردم و همچین مشکلی نداشت
در هر صورت ممنون

trustmiracle
جمعه 20 دی 1387, 10:38 صبح
سلام
من تو netbeans هرچی سعی می کنم فارسی بنویسم اصلا نمی تونم.
encoding پروژه روی utf-8 هست ولی اصلا نمی تونم فارسی بنویسم. یعنی در حقیقت اصلا صفحه کلید فارسی نمی شه.
نه در محیطظ design و نه در محیط source.
وقتی صفحه کلید رو فارسی می کنم باز هم متن انگلیسی می نویسه.
در حالی که توی eclipse اصلا چنین مشکلی ندارم.
چیکار باید بکنم تا توی netbeans هم بتونم فارسی بنویسم

trustmiracle
شنبه 21 دی 1387, 10:35 صبح
من مشکل قبلیم حل شد ولی الان یه مشکل دیگه دارم:
وقتی یه برنامه می نویسم و اجراش می کنم داخل jtextfield ها اصلا نمی تونم فارسی بنویسم. یعنی وقتی صفحه کلید رو فارسی می کنم و شروع می کنم به نوشتن باز هم انگلیسی می نویسه:گریه:

sunshinemistery
یک شنبه 03 بهمن 1389, 15:09 عصر
برای گرفتن فونت یک فریم باید contentPane رو بگیری.
از getContentPane استفاده کن. به JComponent تبدیل (cast) کن. بعد فونت رو به دکمه بده


اما من یه مشکل عمده دارم. هر بار که یک دیالوگ باز میکنم زبان سیستم را برمیگردونه.
هم ویندوز هم لینوکس.
یعنی هربار که میخوام متن تایپ کنم توی دیالوگ جدید ، باید زبان سیستو رو برگردونم

jlover
شنبه 09 بهمن 1389, 08:32 صبح
اما من یه مشکل عمده دارم. هر بار که یک دیالوگ باز میکنم زبان سیستم را برمیگردونه.
هم ویندوز هم لینوکس.
یعنی هربار که میخوام متن تایپ کنم توی دیالوگ جدید ، باید زبان سیستو رو برگردونم
من که درست متوجه منظورتون نشدم، اما یه حدسی می زنم!
فایلی که ضمیمه می کنم رو می تونید در پوشه ی Jre/ lib ذخیره کنید و نتیجه رو ببینید که چی میشه (البته فایل پراپرتیز داخل آرشیو منظورم هست)
البته واسه رو ویندوزه، یادم نیست روی لینوس فرق می کنه یا نه...