# فناوری جاوا > برنامه‌نویسی جاوا > Java SE : نگارش استاندارد جاوا >  طراحی گرافیکی جاوا در نت بینز

## ensiyehh

سلام من باید برای دانشگا برنامه گرافیکی جاوا بنویسم ...
شبیه سازی یک پشته با اندازه حداکثر 10 عضو به این شکل که کاربر اندازه پشته رو وارد می کنه و دکمه هایی برای push و pop وجود داشته باشد ... 
کسی هست منو راهنمایییی کنه !!!!! خیلی فوریه منم هیچی نمی دونم کلی گیج شدم ب :گریه:  با این جزوه ها و کتابا 

امید وارم کسی باشه که بتونم باهاش دراین مورد صحبت کنم .  :لبخند:

----------


## java.source.ir

باعرض سلام، دوست عزیز برای اینکه بتونی Stack را در جاوا پیاده سازی کنی می توانی از لینک زیر استفاده نمایی:
http://www.roseindia.net/java/exampl...mplement.shtml
اما برای اینکه این پیاده سازی را به یک محیط Graphical انتقال دهی لازم است تا با مطالب مربوط به Java2D آشنایی کامل پیدا نمایی که برای این آشنایی نیز باید به لینک زیر مراجعه نمایی:
http://download.oracle.com/javase/tu.../2d/index.html
همچنین مطالب مربوط به Swing رو نیز تا حدی که بتوانی فرم ایجاد کنی و از مدیریت رویدادها استفاده نمایی بلد باشی:
http://download.oracle.com/javase/tutorial/uiswing/
در نهایت اگر مطلب اول را خوب یاد گرفتی می توانی مثالی به مانند مثال زیر پیاده سازی نمایی:
http://www.planet-source-code.com/vb...=6732&lngWId=2
البته مثال بالا بصورت Command Line می باشد و اگر Java2D را خوب یاد بگیری به راحتی می توانی مثال بالا را به محیط گرافیکی تبدیل کنی. یعنی عملا دیگه مشکلی نیست و به راحتی بعد از طراحی محیط گرافیکی می توانی کدهای مربوطه را منتقل کنی. اگر هم ایرادی داشتی خوشحال میشم که بتونم کمکت کنم. (هدف از آموزش اینه که تو ماهیگیری یاد بگیری نه اینکه کسی برات ماهی رو بگیره)

موفق باشی.

----------


## ensiyehh

:خجالت:   سلام دوباره ... یه مثال بهم میدین برای ارتباط برقرار کردن بین دکمه و کلاس !
منظورم اینه که وقتی مثلا رو دکمه push کلیک راست می کنیم و actionperform رو براش فعال میکنیم اون دستوری که میخوام براش بنویسم چه طوری باید باشه تا کاری رو که میخوام انجام بده !
مثلا من برای ایینکه محتوای یک textfield پاک بشه این رو گذاشتم :
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            jTextField1.setText("");
    }            خوب اینا آسون !
ولی برای اینکه push رو انجام بدم نمیدونم چه طور !!! یه راهنمایی کنین ! مرسی ... ببخشیدا هنوز برام گنگ!   :افسرده:

----------


## ensiyehh

راستی از راهنمایی قبلیتونم ممنون یه دنیا

----------


## qweewq22

آموزش فارسی نیست بریم یاد بگریم ؟ java2d?
 اگه میشه بگین کحا میشه یه اموزش روان به زبان انگلیسی پیدا کرد ؟ java2d?

----------


## java.source.ir

> سلام دوباره ... یه مثال بهم میدین برای ارتباط برقرار کردن بین دکمه و کلاس !
> منظورم اینه که وقتی مثلا رو دکمه push کلیک راست می کنیم و actionperform رو براش فعال میکنیم اون دستوری که میخوام براش بنویسم چه طوری باید باشه تا کاری رو که میخوام انجام بده !
> مثلا من برای ایینکه محتوای یک textfield پاک بشه این رو گذاشتم :
> private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
>             jTextField1.setText("");
>     }            خوب اینا آسون !
> ولی برای اینکه push رو انجام بدم نمیدونم چه طور !!! یه راهنمایی کنین ! مرسی ... ببخشیدا هنوز برام گنگ!


با عرض سلام
برای اینکه بتونید کار مربوط به Push کردن رو انجام بدید لازمه که عملیات مربوط به Push را در رویداد مربوط به دکمه ای که برای اینکار در فرم تعبیه کرده اید انجام دهید:
مثلا فرض کنید دکمه ای با نام pushButton تعریف شده است و قرار است عملیات  Push کردن را انجام دهد. کدهای زیر نمونه ساده ای از اینکار است:
private void pushButtonActionPerformed(java.awt.event.ActionEve  nt evt) {                                         
     String str = jTextField1.getText();
 int n = Integer.parseInt(str);
stack.push(n); بهتر است در این رابطه هم به لینکهای زیر مراجعه نمایی تا با مدیریت رویدادها بیشتر آشنا شوی:
http://www.roseindia.net/java/exampl...AwtEvent.shtml
http://www.javaworld.com/javaworld/j...-08-event.html

----------


## java.source.ir

> آموزش فارسی نیست بریم یاد بگریم ؟ java2d?
>  اگه میشه بگین کحا میشه یه اموزش روان به زبان انگلیسی پیدا کرد ؟ java2d?


 مطالعه لینک زیر شاید خالی از لطف نباشه:
http://zetcode.com/tutorials/java2dtutorial/

----------


## qweewq22

اگر بخواهیم رویداد اضافه کردن آیتم رو از jtext به لیست انجام دهیم باید چیکار کنیم ؟!
و اگر بخواهیم هنگامی که منو اجرا میشود بکی از دکمه ها غیر فعال شود باید چیکار کنیم ؟!(کد نویسی)

----------


## java.source.ir

> اگر بخواهیم رویداد اضافه کردن آیتم رو از jtext به لیست انجام دهیم باید چیکار کنیم ؟!
> و اگر بخواهیم هنگامی که منو اجرا میشود بکی از دکمه ها غیر فعال شود باید چیکار کنیم ؟!(کد نویسی)


به لینک زیر یک نگاهی بنداز:
http://www.seasite.niu.edu/cs580java/JList_Basics.htm

اما در مورد سوال دوم به لینک زیر نگاهی بینداز:
http://download.oracle.com/javase/tu...ents/menu.html

----------


## qweewq22

در مورد اینکه اگر بخواهیم رویداد اضافه کردن آیتم رو از jtext به لیست انجام دهیم باید چیکار  کنیم ؟!
اگه میشه خودتون گام به گام توضیح بدین باید چیکار کنم ؟! :گریه: 
من هرکاری کردم نتونستم یک متن رو به jlist اضافه کنم  :گریه:

----------


## java.source.ir

> در مورد اینکه اگر بخواهیم رویداد اضافه کردن آیتم رو از jtext به لیست انجام دهیم باید چیکار  کنیم ؟!
> اگه میشه خودتون گام به گام توضیح بدین باید چیکار کنم ؟!
> من هرکاری کردم نتونستم یک متن رو به jlist اضافه کنم


 در این مثال بسیار پیش پا افتاده با هر بار تایپ یک کلمه که در TextField انجام می شود کل متن موجود در TextField  به لیست اضافه می شود. (لازم به ذکر است که این مثال بسیار پیش پا افتاده و قابل قرار گرفتن در این صفحه نبوده است اما برای یادگیری مفید است)
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JTextField;

public class NewSample extends JFrame {
    private Container container = getContentPane();
    public JTextField textField = new JTextField("Please enter your string", 20);
    public DefaultListModel listModel = new DefaultListModel();
    public JList list = new JList(listModel);

    public NewSample() {
        container.setLayout(new FlowLayout());
        textField.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent arg0) {
                // TODO Auto-generated method stub
                listModel.addElement(textField.getText());
                list = new JList(listModel);
            }

            @Override
            public void keyReleased(KeyEvent arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void keyPressed(KeyEvent arg0) {
                // TODO Auto-generated method stub
            }
        });
        
        container.add(textField);
        container.add(list);
        
        pack();
        setVisible(true);
    }
    
    public static void main(String[] args) {
        NewSample app = new NewSample();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)  ;
    }
}

----------


## qweewq22

چطور میشه عناصر داخل jlist را از پایین به بالا نمایش داد؟
چطوری میشه یک jlable رو وقتی برنامه رو اجرا میکنیم مخفی شه ?

----------


## javaphantom

من JList رو تو جاوا در eclipse بلدم ولی جاوا در نت بینز رو بلد نیستم.

----------


## java.source.ir

> من JList رو تو جاوا در eclipse بلدم ولی جاوا در نت بینز رو بلد نیستم.


 میشه بگی این دو مقوله چه ربطی بهم دارند. کد کده دیگه چه تو eclipse بنویسیش چه تو NetBeans. این امکانات یک IDE هست که اونو از بقیه متمایز می کند.

----------


## java.source.ir

> چطور میشه عناصر داخل jlist را از پایین به بالا نمایش داد؟
> چطوری میشه یک jlable رو وقتی برنامه رو اجرا میکنیم مخفی شه ?


 برای سوال اولت به لینک زیر نگاهی بنداز:
http://stackoverflow.com/questions/1...-bottom-to-top

برای سوال دومت هم بهتره از setVisible(false) در JLable استفاده کنی.

دوست عزیز برای اینکه به تمام جواب هات برسی بد نیست خودآموز سایت sun رو درباره swing نگاهی بندازی.

موفق باشی

----------


## marziehm869

سلام من این کد رو نوشتم میخوام بیضی بکشه نمیکشه!!!
 public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    g2.draw(new Ellipse2D.Double(10, 18,
                             22,
                             44));
این بیضی واشکال رو باید داخل یه فرم بکشه ؟؟؟ :متعجب: 
ینی یه شی جساب میشه!!
پ.ن:من مبتدیم. :ناراحت: 
کاری که میخ.ام بکنم اینه:یه شکل شبیه گراف بکشم با پیکان البته.داخل بیضیها هم حرف بنویسم.
برای رسم یک dfa (اتاماتای قطعی). :افسرده:

----------


## younes221

سلام ، 

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

 شما 2 راه دارید یک راه اینه یک کلاس درست کنید و از JComponent مشتقش کنید و سپس از متد paintComponent استفاده کنید ، راه حل دوم که سادهتر هم هست اینه که یک JApplet درست کنید و از مت paint ش استفاده کنید و سپس از طریق Applet Viewer اونو مشاهده کنید کدش هم به شکل زیر هست :

package mainPackage;

import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;

public class Graphic extends JApplet {

    /**
     * Create the applet.
     */
    
    public void paint(Graphics g)
    {
        Graphics2D g2 = (Graphics2D)g;
        g2.draw(new Ellipse2D.Double(10,10,100,100));
    }
    
}


** کدتون بین تگ های Code قرار بدین تا راحتتر بتونیم بخونیمش . 
** کد بالا یک دایره را روی یک Applet میکشه واسه اینکه به بیضی تبدیل بشه مختصات 100 رو عوض کن.

----------

