اذهب إلى المحتوى
  • 0

طريقة التحقق من نوع القيم المدخلة في JTextField بلغة جافا

Wissal Wissou

السؤال

 القيم التي يدخلها المستخدم في كل الخانات تدخل بsttring لكن اريد ان تكون Tacheو Précédent تقبلان فقط رقم او حرف

اما DuréeوCoût يقبلو  قيم تدخل FLOAT 

يعني لا يستطيع المستخدم ادخال الرمووز في اي خانة اضافة لهاته الشروط ارجوووووووووووو المساعدة و تصحيح الكود هنا  انا مستعجلة 

package myroject;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.JScrollPane;
 import javax.swing.table.DefaultTableModel;
public class table01 extends javax.swing.JFrame {
    static JLabel label_1 = new JLabel("Tache");
    static JLabel label_2 = new JLabel("Durée");
    static JLabel label_3 = new JLabel("Précédent");
    static JLabel label_4= new JLabel("Coût");
    static JTextField textField_1 = new JTextField();
    static JTextField textField_2 = new JTextField();
    static JTextField textField_3 = new JTextField();
    static JTextField textField_4 = new JTextField();
    static JButton btn_Ajouter = new JButton("Ajouter");
    static JButton btn_Essuyer = new JButton("Essuyer");
    static JButton btn_Supprimer = new JButton("Supprimer la sélection");
    static JButton btn_Supptout= new JButton("Supprimer tout");
    static DefaultTableModel model = new DefaultTableModel();
    static JTable table = new JTable( model );
    static JScrollPane tableScroller = new JScrollPane( table );
    public table01() {
        model.addColumn("Tache");
        model.addColumn("Durée");
        model.addColumn("Précédent");
        model.addColumn("Coût");
        label_1.setBounds(35, 50, 100, 20);
        label_2.setBounds(35, 90, 50, 20);
        label_3.setBounds(35, 130, 120, 20);
        label_4.setBounds(35, 170, 50, 20);
        textField_1.setBounds(100, 50, 120, 20);
        textField_2.setBounds(100, 90, 120, 20);
        textField_3.setBounds(100, 130, 120, 20);
        textField_4.setBounds(100, 170, 120, 20);
        btn_Ajouter.setBounds(180, 210, 90, 30);
        btn_Essuyer.setBounds(100, 210, 90, 30);
        btn_Supprimer.setBounds(315, 250, 170, 30);
        btn_Supptout.setBounds(500, 250, 140, 30);
        tableScroller.setBounds(280, 50, 370, 160);
        getContentPane().add(label_1);
        getContentPane().add(label_2);
        getContentPane().add(label_3);
        getContentPane().add(label_4);
        getContentPane().add(textField_1);
        getContentPane().add(textField_2);
        getContentPane().add(textField_3);
        getContentPane().add(textField_4);
        getContentPane().add(btn_Ajouter);
        getContentPane().add(btn_Essuyer);
        getContentPane().add(btn_Supprimer);
        getContentPane().add(btn_Supptout);
        getContentPane().add(tableScroller);
        this.setSize(800, 400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(null);
        
         btn_Ajouter.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                 if( !textField_1.getText().equals("") && !textField_2.getText().equals("") && !textField_3.getText().equals("") && !textField_4.getText().equals(""))
                {   

                   
                   
                     String Tache = textField_1.getText();
                     String Durée = textField_2.getText();
                     String Précédent = textField_3.getText();
                     String Coût = textField_4.getText();
                     String[] userInfo = { Tache, Durée, Précédent  ,Coût };
                    model.addRow( userInfo );
                }
            }
        });
         btn_Essuyer.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                 textField_1.setText("");
                textField_2.setText("");
                textField_3.setText("");
                textField_4.setText("");
            }
        });
         btn_Supprimer.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                 if( table.getSelectedRowCount() > 0 )
                {
                     int[] selectedIndices = table.getSelectedRows();
                    for( int i=selectedIndices.length-1; i>=0; i-- )
                    {
                        model.removeRow( selectedIndices[i] );
                    }
                }
            }
        });
         btn_Supptout.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                 model.setRowCount(0);
            }
        });
    }
     }

 

جافا.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

لجعل الخانة JTextField تقبل نوعًا معينًا فقط، يمكن التحقق أن القيمة الموجودة بهذه الخانة قابلة لتحويل لهذا النوع.

مثلًا في حالة أردنا التحقق من أن JTextField تحتوي على رقم سنقوم بكتابة الكود التالي:

try {

  int Tache = parseInt(textField_1.getText());
  

} catch(NumberFormatException ex) {
  
  // إضهار رسالة خطأ
	
}

بنفس الطريقة يمكن التحقق من أن الخانة تحتوي على قيمة من نوع float هكذا:

try {

  int Tache = Float.parseFloat(textField_2.getText());
  

} catch(NumberFormatException ex) {
	// إظهار رسالة خطأ
}

أما بالنسبة للتحقق من أن الخانة JTextField تحتوي على حرف واحد فقط كالتالي:

if(textField_1.getText().length() == 1) {
	String Tache = textField_1.getText();
} else {
	// إظهار رسالة خطأ
}

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هل يمكن التوضيييح في اي جزء من الكود لي عندي  اضع هاته الكودات 

 

 

 

ايضاالقد كنت ابحث قبل قليل وجدت هكذاا  هل يساعدني في ما احتاجه لاني اريد يكون في نفس الخانة تقبل رقم او حرف  بينما ترفض رمز في الخانتين 1 و3 اما الثانية والرابعة تدخلقيم float                لكن مشكلتي لم اعرف كيف اوظف هاته الكودات في الكود الاساسي لي عنديي

 

List<String> names = new ArrayList<String>();
names.add("Lokesh");  
names.add("LOkesh123");  
names.add("LOkesh123-");  //Incorrect
String regex = "^[a-zA-Z0-9]+$";
Pattern pattern = Pattern.compile(regex);
for (String name : names)
{
  Matcher matcher = pattern.matcher(name);
  System.out.println(matcher.matches());
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 17 دقائق مضت قال Wissal Wissou:

هل يمكن التوضيح في اي جزء من الكود لي عندي  اضع هاته الكودات 

يمكن وضع هذه الأكواد داخل الكود المسؤول على عملية الضغط على زر الإضافة Ajouter

btn_Ajouter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
	// يجب وضعه هنا
  }
});

بالشكل التالي مثلًا:

btn_Ajouter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
	// يجب وضعه هنا
  if(textField_1.getText().equals("") || textField_2.getText().equals("") || textField_3.getText().equals("") || textField_4.getText().equals("")){  
    return;
  }
  
  try {
    Integer.parseInt(textField_1.getText());
  } catch(NumberFormatException ex) {
    if(textField_1.getText().length() != 1) {
		return;
    }
  }
  
  String Tache = textField_1.getText();
  
  try {
    Integer.parseInt(textField_3.getText());
  } catch(NumberFormatException ex) {
    if(textField_3.getText().length() != 1) {
		return;
    }
  }
  
  String Precedent = textField_3.getText();
      
  try {
    Float.parseFloat(textField_2.getText());
    String Duree = textField_2.getText();
    
    
  } catch(NumberFormatException ex) {
    // إضهار رسالة خطأ
    return;
  }
  
  try {
    Float.parseFloat(textField_4.getText());
    String Cout = textField_4.getText();
  } catch(NumberFormatException ex) {
    // إضهار رسالة خطأ
    return;
  }
  
  
  String[] userInfo = { Tache, Duree, Precedent, Cout };
  model.addRow( userInfo );

  }
});

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال Wissal Wissou:

لقد وضعتالكودلكن ظهرتاخطااء في btn الاخرين 

يجب التحقق من ترتيب المعقوفات والأقواس، هل جميعها مغلق بالشكل الصحيح.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...