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

كيف يمكن اجعل الjtextField لا يقبل بإلا بالوقت

مغلق
بدأه محمد الهباش في 5 ديسمبر 2004 · 3 رد · 582 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السؤال هو كيف يمكنني ان اجععل الjtextField لا يقبل بإلا بالوقت بالصيغة التالية مثلا 2:30 وايضا التاريخ ان يقبل بالصيغة 23/2/2004 الرجاء الشرح بالكود .

تم تعديل هذه المشاركة بواسطة مجدي محمود في 5 ديسمبر 2004 في 22:59

نموت وتحيا ...................فلسطين .

#2

امممم

عشان تسوي هدا الامر بال JTextField

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

ولازم انت بنفسك تسوي فحص

لكن هنالك وسيلة اخرى اسهل بكثير باستخدام JFormattedTextField

من حسن الحظ

ما زال لدي

برنامج جافا بسيط يشرح استخدامات JFormattedTextField

وفيه عدة خانات

ومن ضمن هده الخانات

خانة التاريخ

بحيث لا تقبل الخانة التاريخ الا بالفورمات / /

اليك الكود

وان لم تفهم شيء من الكود فلا تتردد في الاستفسار

والشباب هنا سيقومون بالواجب

وبحاول اكون معهم

import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
import java.net.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
import javax.swing.text.*;

public class FormatTest {
   public static void main(String[] args) {  
      FormatTestFrame frame = new FormatTestFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.show();
   }
}

class FormatTestFrame extends JFrame {  
   public FormatTestFrame() {  
      setTitle("FormatTest");
      setSize(WIDTH, HEIGHT);

      Container contentPane = getContentPane();

      JPanel buttonPanel = new JPanel();
      okButton = new JButton("Ok");
      buttonPanel.add(okButton);
      contentPane.add(buttonPanel, BorderLayout.SOUTH);

      mainPanel = new JPanel();
      mainPanel.setLayout(new GridLayout(0, 3));
      contentPane.add(mainPanel, BorderLayout.CENTER);

      JFormattedTextField intField = new JFormattedTextField(
         NumberFormat.getIntegerInstance());
      intField.setValue(new Integer(100));
      addRow("Number:", intField);

      JFormattedTextField intField2 = new JFormattedTextField(
         NumberFormat.getIntegerInstance());
      intField2.setValue(new Integer(100));
      intField2.setFocusLostBehavior(JFormattedTextField.COMMIT);
      addRow("Number (Commit behavior):", intField2);

      JFormattedTextField intField3
         = new JFormattedTextField(new 
            InternationalFormatter(
               NumberFormat.getIntegerInstance()) {
                 protected DocumentFilter getDocumentFilter() {
                  return filter;
                 }
                 private DocumentFilter filter = new IntFilter();
               });
      intField3.setValue(new Integer(100));                     
      addRow("Filtered Number", intField3);

      JFormattedTextField intField4 = new JFormattedTextField(
         NumberFormat.getIntegerInstance());
      intField4.setValue(new Integer(100));
      intField4.setInputVerifier(
         new FormattedTextFieldVerifier());
      addRow("Verified Number:", intField4);

      JFormattedTextField currencyField = new 
         JFormattedTextField(NumberFormat.getCurrencyInstance());
      currencyField.setValue(new Double(10));
      addRow("Currency:", currencyField);

      JFormattedTextField dateField = new JFormattedTextField(
         DateFormat.getDateInstance());
      dateField.setValue(new Date());
      addRow("Date (default):", dateField);

      DateFormat format = 
         DateFormat.getDateInstance(DateFormat.SHORT);
      format.setLenient(false);
      JFormattedTextField dateField2 = new JFormattedTextField(
         format);
      dateField2.setValue(new Date());
      addRow("Date (short, not lenient):", dateField2);

      try {
         DefaultFormatter formatter = new DefaultFormatter();
         formatter.setOverwriteMode(false);
         JFormattedTextField urlField = new JFormattedTextField(
            formatter);
         urlField.setValue(new URL("http://www.cs.sunysb.edu"));
         addRow("URL:", urlField);
      }
      catch (MalformedURLException exception) {
         exception.printStackTrace();
      }

      try {
         MaskFormatter formatter 
            = new MaskFormatter("###-##-####");
         formatter.setPlaceholderCharacter('0');
         JFormattedTextField ssnField 
            = new JFormattedTextField(formatter);             
         ssnField.setValue("012-34-5678");
         addRow("SSN Mask:", ssnField);      
      }
      catch (ParseException exception) {
         exception.printStackTrace();
      }

      JFormattedTextField ipField 
         = new JFormattedTextField(new IPAddressFormatter());
      ipField.setValue(new byte[] { (byte)111, 11, 11, 11 });
      addRow("IP Address:", ipField);
   }

   /**
      Adds a row to the main panel.
      @param labelText the label of the field
      @param field the sample field
   */
   public void addRow(String labelText, 
     final JFormattedTextField field) {
      mainPanel.add(new JLabel(labelText));
      mainPanel.add(field);
      final JLabel valueLabel = new JLabel();
      mainPanel.add(valueLabel);
      okButton.addActionListener(new
         ActionListener() {
            public void actionPerformed(ActionEvent event) {
               Object value = field.getValue();
               if (value.getClass().isArray()) { 
                  StringBuffer buffer = new StringBuffer();
                  buffer.append('{');
                  for (int i = 0; i < Array.getLength(value);
                       i++) {
                     if (i > 0) buffer.append(',');
                     buffer.append(
                        Array.get(value, i).toString());
                  }
                  buffer.append('}');
                  valueLabel.setText(buffer.toString());
               }
               else
                  valueLabel.setText(value.toString());
            }
         });
   }
    
   public static final int WIDTH = 500;
   public static final int HEIGHT = 250;  

   private JButton okButton;
   private JPanel mainPanel;
}

/**
   A filter that restricts input to digits and a '-' sign.
*/
class IntFilter extends DocumentFilter {
   public void insertString(FilterBypass fb, int offset,
     String string, AttributeSet attr) 
     throws BadLocationException {
      StringBuffer buffer = new StringBuffer(string);
      for (int i = buffer.length() - 1; i >= 0; i--) {
         char ch = buffer.charAt(i);
         if (!Character.isDigit(ch) && ch != '-') 
            buffer.deleteCharAt(i);
      }
      super.insertString(fb, offset, buffer.toString(), attr);
   }

   public void replace(FilterBypass fb, int offset, 
     int length, String string, AttributeSet attr) 
     throws BadLocationException {
      if (string != null) {
         StringBuffer buffer = new StringBuffer(string);
         for (int i = buffer.length() - 1; i >= 0; i--) {
            char ch = buffer.charAt(i);
            if (!Character.isDigit(ch) && ch != '-') 
               buffer.deleteCharAt(i);
         }
         string = buffer.toString();
      }
      super.replace(fb, offset, length, string, attr);
   }
}

/**
   A verifier that checks whether the contents of 
   a formatted text field is valid.
*/
class FormattedTextFieldVerifier extends InputVerifier {
   public boolean verify(JComponent component) {         
      JFormattedTextField field = (JFormattedTextField)component;
      return field.isEditValid();
   }     
}

/**
   A formatter for 4-byte IP addresses of the form a.b.c.d
*/
class IPAddressFormatter extends DefaultFormatter {
   public String valueToString(Object value) 
     throws ParseException {
      if (!(value instanceof byte[])) 
         throw new ParseException("Not a byte[]", 0);
      byte[] a = (byte[])value;
      if (a.length != 4) 
         throw new ParseException("Length != 4", 0);
      StringBuffer buffer = new StringBuffer();
      for (int i = 0; i < 4; i++) {
         int b = a;
         if (b < 0) b += 256;
         buffer.append(String.valueOf(b));
         if (i < 3) buffer.append('.');
      }
      return buffer.toString();
   }

   public Object stringToValue(String text) throws ParseException {
      StringTokenizer tokenizer = new StringTokenizer(text, ".");
      byte[] a = new byte[4];
      for (int i = 0; i < 4; i++) {
         int b = 0;
         try {
            b = Integer.parseInt(tokenizer.nextToken());
         }
         catch (NumberFormatException e) {
            throw new ParseException("Not an integer", 0);
         }
         if (b < 0 || b >= 256) 
            throw new ParseException("Byte out of range", 0);
         a = (byte)b;
      }
      return a;
   }
}

لا بد من صنعاء وان طال السفر

#3

طيب اخي انت اعطيتني الكود انا ما بعرف وين اضعه في الAction script ولا وين

مش فاهم اعذرني انا مبتدإ

نموت وتحيا ...................فلسطين .

#4
اقتباس
طيب اخي انت اعطيتني الكود انا ما بعرف وين اضعه في الAction script ولا وين

مش فاهم اعذرني انا مبتدإ

يا عزيزي الفاضل قم بنخزين الملف تحت اسم FormatTest.java ثم compile ثم Run

لست متواجد بشكل يومي

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…