PDA

View Full Version : نمایش متن



yegane8
جمعه 16 تیر 1391, 17:20 عصر
سلام من میخواهم متن های بالای 10(چند صفحه) خط رو به کاربر نشون بدهم برای این کار از TextArea استفاده کنم و متن رو توش بنویسم؟
به نظر خودم که خوب نیست این کار و زیبایی هم ندارد
لطفا راهنمایی کنید
با تشکر

spiderman200700
جمعه 16 تیر 1391, 17:54 عصر
سلام.
میتونید خودتون یه نمایشگر متن با امکانات سطح پایین جاوا بسازید. با این کار میتونید هر چیزی رو روی صفحه رسم کنید.
اگه برنامه نویسی موبایل انجام داده باشید خیلی راحت میتونید این کار رو انجام بدید.

به هر حال توضیحی که میتونم بدم اینه که ، از کلاس JPanel ارث بری کنید و متد paintComponent رو پاده سازی کنی.
مثال:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Paint extends JPanel {

public void paintComponent(Graphics g) {
g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.red);
g.setFont(new Font("tahoma", Font.BOLD, 25));
g.drawString("salam. ba in metod mituni har chizi ru safhe rasm koni", 0, getHeight() / 2);
}

public static void main(String args[]) {
JFrame frame = new JFrame("A simple paint program");
Paint paintPanel = new Paint();
frame.setResizable(false);
frame.add(paintPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.setSize(720, 480);
frame.setVisible(true);
}
}

spiderman200700
جمعه 16 تیر 1391, 18:07 عصر
البته این روش خیلی بیشتر از حالت عادی کار میبره.
باید متن رو به چند قسمت تقسیم کنی و هر با کاربر میخواد به صفه ی بعد بره دوباره رسمش کنی و یه سری مشکلات که اگه خودت این کارو انجام بدی میفهمی.

ولی مزیتش اینه که هر چیزی که دلت بخواد میتونی باهاش بسازی.

yegane8
جمعه 16 تیر 1391, 19:04 عصر
ممنون خیلی‌ جالب بود

چند تا سوال داشتم:

در برنامه چند تا topic وجود دارد که هر کدام چند صفحه را شامل میشوند حالا به نظر شما خوبه که کلاس paint رو به عنوان abstract class به کار ببرم و در کلاس‌ مربوط به هر topic متد drawString رو override کنم؟

من باید اطلاعات را هر از دیتابیس بخونم یا در همین متد drawString بنویسم مشکلی‌ نداره؟

باید متن رو به چند قسمت تقسیم کنی و هر با کاربر میخواد به صفه ی بعد بره دوباره رسمش کنی و یه سری مشکلات که اگه خودت این کارو انجام بدی میفهمی.

این کار درسته که برای هر صفحه یک button برای next و یک button برای previous داشته باشم و در actionListener این button‌ها کلاس paint n را new کنم اینطوری باید برای هر صفحه یه کلاس paint داشته باشم که این خوب نیست پس باید چی‌ کار کنم


البته این روش خیلی بیشتر از حالت عادی کار میبره.
منظورتون از حالت عادی همون استفاده از textArea است ؟

لطفا راهنمای کنید

باتشکر

yegane8
جمعه 16 تیر 1391, 20:11 عصر
یه سوال دیگه
چرا کاربر نمی تونه اندازه این jframe را بر خلاف فرم های دیگه تغییر بدهد باید چی کار کرد تا این اتفاق بیافتد
و چطوری باید یک متن رو در چند خط چاپ کرد کاری که در System.out.println برا این کار میکردیم اینجا جواب نمی دهد باید چی کار کنم
باتشکر

spiderman200700
جمعه 16 تیر 1391, 21:24 عصر
من یه برنامه در این مورد نوشتم که اینجا قرارش دادم. برنامه ی نسبتا خوبیه. ببینیدش همه چیز دستگیرتون میشه و خیلی نکته ها برای رسم متن رو ازش یاد میگیرید.
http://barnamenevis.org/showthread.php?328388-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%8 7%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AC%D8%A7%D9%88%D8%A7&p=1542557&viewfull=1#post1542557

برای رسم صفحه ی بعد یا قبل هم در رویداد کلیک باید متن جدید رو بخونید و داخل یه شی String سراسری قرار بدید(در drawString باید از این متغییر برای رسم استفاده کنید) بعد از این دستور استفاده کنید:
paint.repaint();

به این دلیل اندازه قابل تغییر نیست که از این متد اسفاده کردیم:
frame.setResizable(false);

yegane8
جمعه 16 تیر 1391, 22:21 عصر
این متغییر چیست و در برنامه چی کار می کند

private Dimension d;

yegane8
جمعه 16 تیر 1391, 22:28 عصر
و ایا این متد paintComponent در Jpanel قبلا وجود داشته و حالا override شده
و چرا در برنامه که لینک اش را گفته اید هیچ جا این متد فراخوانی نشده؟
منظورتون از String Line="" چیه
دقیقا کجای برنامه داره متن رو در چند خط چاپ می کند
لطفا راهنمایی کنید
با تشکر

spiderman200700
جمعه 16 تیر 1391, 22:29 عصر
Dimension یه اندازه رو بر حسب طول و عرض در خودش نگهداری میکنه

spiderman200700
جمعه 16 تیر 1391, 22:31 عصر
و ایا این متد paintComponent در Jpanel قبلا وجود داشته و حالا override شده
و چرا در برنامه که لینک اش را گفته اید هیچ جا این متد فراخوانی نشده؟

بله در JPanel وجو داشته.

با متد repaint متد paintComponent رو صدا میزنیم.

yegane8
جمعه 16 تیر 1391, 22:56 عصر
میشه جواب این سوال رو خیلی ساده بدهید من اوون برنامه را درست نمی فهمم :(
چطوری باید متن رو در چند خط چاپ کرد

yegane8
جمعه 16 تیر 1391, 23:51 عصر
این علامت <p> به معنای پاراگراف جدید است؟
و وقتی در string Text, "+" می نویسیم همان معنای پاراگراف جدید را می دهد؟
باتشکر

yegane8
شنبه 17 تیر 1391, 00:24 صبح
الان فهمیدم که کجا های برنامه متن رو در چند خط چاپ می کند
الان این کلاس را در actionListener یکی از button ها new کردم اما با زدن ان button هیچ اتفاقی نمی افتد (البته خود فایل به تنهایی run می شود) چرا؟ :متفکر:
لطفا راهنمایی کنید :(
باتشکر