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

Generator example 01

بدأه Muhammed Magdy في 7 نوفمبر 2014 · 2 رد · 2,845 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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


 


رأيت مثال عجبني وحبيت أنفذه ، في هذا المثال عندما يضع المستخدم رقم في ال JTextField يولد JTextField بالعدد الذي وضعه و عند الضغط على Total يحسب مجموع الأعداد المدخلة في النص


 


Generatorexample01_zpsc2d146a9.jpg


 


وصلت حتى ال jButton2ActionPerformed هل من أفكار :)  ؟


#2

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

 

أعجبتني فكرة التمرين ! :rolleyes:

 

هذه محاولتي :

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.*;

/**
 *
 * @author Snack3r
 */
public class GeneratorDemo extends JDialog implements ActionListener {

    private Container container;
    private JPanel topPanel, centerPanel, bottomPanel, view;
    private JTextField valueNumbers;
    private JButton generate, random, calcul;
    private JLabel result;
    private JScrollPane scroller;
    private ArrayList<JTextField> list;
    private int number;

    public void init() {
        valueNumbers = new JTextField();
        valueNumbers.setPreferredSize(new Dimension(100, 27));
        generate = new JButton("Generate");
        generate.addActionListener(this);
        topPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 30, 10));
        topPanel.add(new JLabel("No. of values"));
        topPanel.add(valueNumbers);
        topPanel.add(generate);
        centerPanel = new JPanel();
        centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));
        scroller = new JScrollPane(centerPanel);
        scroller.setPreferredSize(new Dimension(300, 210));
        view = ((JPanel) scroller.getViewport().getView());
        random = new JButton("Random");
        random.addActionListener(this);
        calcul = new JButton("Total");
        calcul.addActionListener(this);
        result = new JLabel("Total value : ");
        bottomPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 70, 10));
        bottomPanel.add(random);
        bottomPanel.add(calcul);
        bottomPanel.add(result);
        container = this.getContentPane();
        container.setLayout(new BorderLayout());
        container.add(topPanel, BorderLayout.NORTH);
        container.add(scroller, BorderLayout.CENTER);
        container.add(bottomPanel, BorderLayout.SOUTH);
        pack();
    }

    private void addNewField() {
        JTextField newField = new JTextField();
        newField.setPreferredSize(new Dimension(100, 27));
        newField.setAlignmentX(Component.CENTER_ALIGNMENT);
        list.add(newField);
        view.add(newField);
        view.validate();
    }

    private boolean isListFieldsNotEmpty() {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getText().isEmpty()) {
                return false;
            }
        }
        return true;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == generate) {
            try {
                number = Integer.parseInt(valueNumbers.getText());
                if (number <= 0) {
                    JOptionPane.showMessageDialog(null, "Avertissement, la valeur doit être strictement positive !",
                            "Valeur invalide", JOptionPane.WARNING_MESSAGE, null);
                    view.removeAll();
                    return;
                }
            } catch (NumberFormatException ex) {
                JOptionPane.showMessageDialog(null, "Erreur, veuillez saisir un entier !",
                        "Valeur incorrecte", JOptionPane.ERROR_MESSAGE, null);
                view.removeAll();
                return;
            }
            if (view != null) {
                view.removeAll();
            }
            list = new ArrayList<>();
            for (int i = 1; i <= number; i++) {
                addNewField();
            }
            view.revalidate();
            view.repaint();
        }

        if (e.getSource() == random) {
            if (list == null) {
                JOptionPane.showMessageDialog(null, "Erreur, veuillez tout d'abord générer des champs !",
                        "Champs requis non générés", JOptionPane.ERROR_MESSAGE, null);
                return;
            }
            Random src = new Random(System.currentTimeMillis());
            for (int i = 0; i < list.size(); i++) {
                list.get(i).setText(Integer.toString(src.nextInt(100)));
            }
        }

        if (e.getSource() == calcul) {
            if (list == null) {
                JOptionPane.showMessageDialog(null, "Erreur, veuillez tout d'abord générer des champs !",
                        "Champs requis non générés", JOptionPane.ERROR_MESSAGE, null);
                return;
            }
            if (isListFieldsNotEmpty()) {
                long sum = 0L;
                for (int i = 0; i < list.size(); i++) {
                    sum += Long.parseLong(list.get(i).getText());
                }
                result.setText("Total value : " + Long.toString(sum));
            } else {
                JOptionPane.showMessageDialog(null, "Avertissement, veuillez remplir tous les champs !",
                        "Champs requis vides", JOptionPane.WARNING_MESSAGE, null);
            }
        }
    }

    public static void main(String ...args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException | InstantiationException |
                IllegalAccessException | UnsupportedLookAndFeelException ex1) {
            JOptionPane.showMessageDialog(null, "Erreur, Impossible de charger le Look And Feel du système",
                    "Chargement échoué", JOptionPane.ERROR_MESSAGE, null);
        }
        GeneratorDemo gd = new GeneratorDemo();
        gd.setTitle("Snack3r's Generator");
        gd.init();
        gd.setLocationRelativeTo(gd);
        gd.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        gd.setVisible(true);
    }
}

صورة من واجهة البرنامج :

post-219439-0-07231100-1415374762_thumb.

 

 

بانتظار مشاركات بقية الإخوة.

تم تعديل هذه المشاركة بواسطة Snack3r في 7 نوفمبر 2014 في 18:42

1
#3

هذه تجربتي مع الكود

 
package generator;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class Generator extends JFrame implements ActionListener {
    JFrame frame;
    JPanel panel,panel1,panel2;
    JTextField value;
    JLabel label,TotalVal;
    JButton Generate,total;
    int i,finalVal,y,x,m,val;
    JScrollPane scroll;
    public Generator(){
        frame = new JFrame("Mohamed Generator");
        frame.setDefaultCloseOperation(3);
        frame.setLayout(new BorderLayout());
        
        panel = new JPanel();
        panel1 = new JPanel();
        panel2 = new JPanel();
        
        panel2.setLayout(new FlowLayout(FlowLayout.CENTER, 25, 10));
        panel1.setLayout(new FlowLayout(25, 150, 10));
        
        value = new JTextField();
        Generate = new JButton("Generate");
        total = new JButton("Total");
        TotalVal = new JLabel("Total Value : ");
        
        panel2.add(new JLabel("No. of values"));
        panel2.add(value);
        value.setPreferredSize(new Dimension(250, 27));
        
        panel2.add(Generate);
        panel1.add(total);
        panel1.add(TotalVal);
        
        scroll = new JScrollPane(panel);
        
        frame.add(scroll,BorderLayout.CENTER);
        frame.add(panel1,BorderLayout.PAGE_END);
        frame.add(panel2,BorderLayout.PAGE_START);
        
        
        frame.setSize(600, 400);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        
        Generate.addActionListener(this);
        total.addActionListener(this);
    }
    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        new Generator();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        try{
        val = Integer.parseInt(value.getText());
        }catch(Exception ex){
            JOptionPane.showMessageDialog(rootPane, "يرجى ادخال قيمة عددية");
        }
        if(e.getSource() == Generate){
            
            for(i = 1; i <= val; i++){
                Random ran = new Random();
                JTextField txt = new JTextField(Integer.toString(ran.nextInt(200)));
                panel.setLayout(new GridLayout(val,0));
                panel.add(txt);
                frame.setSize(599, 399);
                x = finalVal;
                finalVal = Integer.parseInt(txt.getText());
                y = y + x;
            }
            m = y + finalVal;
        }if(e.getSource() == total){
            TotalVal.setText("Total Value : " + m);
        }
    }
}

 

 

VsoHYt.png

تم تعديل هذه المشاركة بواسطة Mohamed Hamdan في 14 نوفمبر 2014 في 02:18

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