Nano Hash - криптовалюты, майнинг, программирование

Проверка алфавита в JTextField с использованием Java Swing

Когда я ввожу значение в первый JTextField, его необходимо проверить, чтобы оно принимало только буквенные символы, а не другие. Когда я ввожу символ, отличный от алфавитного, он не должен помещаться в JTextField, и он должен выдавать сообщение в формате метки «следует вводить только буквенные символы» во время нажатия других клавиш.

Это код, который я использовал:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class valid extends JFrame  {
    perform1 per1=new perform1();
    String num1="Alpha";
    String num2="Numeric";
    String num3="Alphanumeric";
    Container contentPane = getContentPane();
    JPanel jp=new JPanel(new GridLayout(2, 2));
    JLabel label1=new JLabel("STUDENT NAME", JLabel.LEFT);
    JLabel label2=new JLabel("REG NO", JLabel.LEFT);
    JTextField text1=new JTextField(15);
    JTextField text2=new JTextField(15);
    public valid(){
        text1.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                per1.dis(text1, e, num1);

            }
        });
        text2.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                per1.dis(text2, e, num2);
            }
        });
        setLayout(new FlowLayout(FlowLayout.CENTER));
        jp.add(label1);
        jp.add(text1);
        jp.add(label2);
        jp.add(text2);
        contentPane.add("Center", jp);
        setSize(400, 300);
        setVisible(true);
    }
    public static void main(String ar[])
    {
        new valid();
    }
}
class perform1{
public void dis(JTextField PTxtCtrl,KeyEvent PKeyvalue,String PTempStr){
    JLabel error=new JLabel();
    //JTextField text=new JTextField();
    String TmpCurntStr;
    String TmpConvStr;
    value val = value.valueOf(PTempStr);

   switch(val){
       case Alpha:
           if((PKeyvalue.getKeyChar()>='a'&& PKeyvalue.getKeyChar()<='z')||
           (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)||
           (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE))
           {
           TmpCurntStr=PTxtCtrl.getText();
           TmpConvStr=TmpCurntStr.toUpperCase();
           PTxtCtrl.setText(TmpConvStr);
           //PTxtCtrl.setEditable(true);
           //error.setText("");
          }else{
           //PTxtCtrl.setEditable(false);
           //error.setText("* Enter only numeric digits(0-9)");

           }
           break;
       case Numeric:
           if((PKeyvalue.getKeyChar()>='0'&& PKeyvalue.getKeyChar()<='9')||
           (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)||
           (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE))
           {
           TmpCurntStr=PTxtCtrl.getText();
           System.out.println("hai");
           }else{
               JOptionPane.showMessageDialog(null,"Only numeric");
           }
           break;
       case Alphanumeric:
           break;
   }
 }
  enum value{
    Alpha,
    Numeric,
    Alphanumeric
}
}
21.12.2011

  • попробовать еще раз с тем же вопросом? stackoverflow.com/questions/8573365/ 21.12.2011
  • в любом случае (если я еще этого не сделал :-), пожалуйста, изучите соглашения об именах Java и придерживайтесь их 21.12.2011
  • Я проголосовал за то, чтобы закрыть 3 раза одни и те же вопросы 21.12.2011
  • Не используйте KeyEvents, поскольку они специфичны для AWT, используйте KeyBinding, как вы используете Swing. Совсем недавно я получил этот ответ, когда опубликовал ответ на Swing с KeyEvents с вычетом -1 из моей оценки. Вам лучше узнать о KeyBinding. Иначе кто-то может вычесть и ваш балл. С уважением 21.12.2011
  • ааа... я знал, я видел точно такой же код еще раз: stackoverflow.com/questions/8572001/ - хотя вопрос немного изменился. Как насчет того, чтобы прочитать учебник? Я уверен, что там есть глава, объясняющая, как решить эту домашнюю работу... 21.12.2011

Ответы:


1

Вы можете использовать JFormattedTextField или обычный JTextField, но назначить свой DocumentFilter.

21.12.2011
  • от анонимного голосующего, я опоздал, я удалил тот же ответ 21.12.2011
  • Мой вопрос в том, что когда я ввожу числовую клавишу вместо алфавита в то время, поле jtext не должно принимать ввод числовой клавиши, тогда оно выдаст сообщение в поле метки, которое должно быть красного цвета на переднем плане, это только Альфа принимает, это рядом с этим конкретным Jtextfield. пожалуйста, дайте мне решение для этого. 21.12.2011

  • 2

    Если вы хотите удалить символы, которые не являются алфавитами, вы можете использовать replaceAll, чтобы ничего не заменить. Например:

    TmpCurntStr=PTxtCtrl.getText();
    TmpConvStr=TmpConvStr.replaceAll("[^a-zA-Z]", "");
    PTxtCtrl.setText(TmpConvStr);
    
    21.12.2011

    3

    Я исправил это, проверьте, если вы не понимаете, дайте мне знать.

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class valid extends JFrame  {
        perform1 per1=new perform1();
        String num1="Alpha";
        String num2="Numeric";
        String num3="Alphanumeric";
        Container contentPane = getContentPane();
        JPanel jp=new JPanel(new GridLayout(2, 2));
        JLabel label1=new JLabel("STUDENT NAME", JLabel.LEFT);
        JLabel label2=new JLabel("REG NO", JLabel.LEFT);
        JTextField text1=new JTextField(15);
        JTextField text2=new JTextField(15);
        public valid(){
            text1.addKeyListener(new KeyAdapter() {
                public void keyReleased(KeyEvent e) {
                    /**
                     * check ASCII value of character enter in text1
                     * if it not fall in alphabets then send Alphanumeric
                     * 
                     */
                    char text = e.getKeyChar();
                    if(text >= 65 && text <= 90 || text >= 97 && text <= 122){
                        per1.dis(text1, e, num1);
                    }else{
                        per1.dis(text1, e, num3);
                    }
    
                }
            });
            text2.addKeyListener(new KeyAdapter() {
                public void keyReleased(KeyEvent e) {
                    per1.dis(text2, e, num2);
                }
            });
            setLayout(new FlowLayout(FlowLayout.CENTER));
            jp.add(label1);
            jp.add(text1);
            jp.add(label2);
            jp.add(text2);
            contentPane.add("Center", jp);
            setSize(400, 300);
            setVisible(true);
        }
        public static void main(String ar[])
        {
            new valid();
        }
    }
    class perform1{
    public void dis(JTextField PTxtCtrl,KeyEvent PKeyvalue,String PTempStr){
        JLabel error=new JLabel();
        //JTextField text=new JTextField();
        String TmpCurntStr;
        String TmpConvStr;
        value val = value.valueOf(PTempStr);
    
       switch(val){
           case Alpha:
               if((PKeyvalue.getKeyChar()>='a'&& PKeyvalue.getKeyChar()<='z')||
               (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)||
               (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE))
               {
               TmpCurntStr=PTxtCtrl.getText();
               TmpConvStr=TmpCurntStr.toUpperCase();
               PTxtCtrl.setText(TmpConvStr);
               //PTxtCtrl.setEditable(true);
               //error.setText("");
              }else{
               //PTxtCtrl.setEditable(false);
               //error.setText("* Enter only numeric digits(0-9)");
    
               }
               break;
           case Numeric:
               if((PKeyvalue.getKeyChar()>='0'&& PKeyvalue.getKeyChar()<='9')||
               (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)||
               (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE))
               {
               TmpCurntStr=PTxtCtrl.getText();
               System.out.println("hai");
               }else{
                   JOptionPane.showMessageDialog(null,"Only numeric");
                   PTxtCtrl.setText("");
               }
               break;
           case Alphanumeric:
    //         System.err.println("check");
               /**
                * if it send Alphanumeric then give a pop up message
                */
               JOptionPane.showMessageDialog(null,"Only Alphabets");
               PTxtCtrl.setText("");
               break;
       }
     }
      enum value{
        Alpha,
        Numeric,
        Alphanumeric
    }
    }
    
    21.12.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..