Как сделать пользовательский ввод форматирования текста в

Иногда настоящее форматирования являются неприемлемыми для использования. В этом состоянии вы можете определить свой собственный пользовательский ввод текста Formatter.

Этот образец кода показывает способ определения пользовательских форматирования текста. Это делает для форматирования текста MyFormatter которые позволят целое число от 1 до 1000. Если вход в текстовое поле не является в этом диапазоне, то текстовое поле будет показывать недействительными.

MyFormatter.java


import java.text.ParseException;

import javax.swing.text.DefaultFormatter;

public class MyFormatter extends DefaultFormatter {

    

    public MyFormatter() {

        super();

    }

    

    // This method reads the text from model class to view class

    public String valueToString(Object arg0throws ParseException {

        return super.valueToString(arg0);

    }

    

    // This method reads the text from view class to modal class and does the validations

    public Object stringToValue(String arg0throws ParseException {

        try {

            int value=Integer.parseInt(arg0);

            if(value>=1&&value<=1000){

                return ""+value;

            }else{

                return "Invalid";

            }

            

        catch (Exception e) {

            return "Invalid";

        }

    }

}

Следующий класс использует MyFormatter.

MyFormatterExp.java


import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JFormattedTextField;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class MyFormatterExp extends JFrame{

    

    public MyFormatterExp() {

        

        setTitle("Example: Custom Formatter");

        JPanel panel = new JPanel();

        JLabel label = new JLabel("Number :");

        JFormattedTextField tf=new JFormattedTextField(new MyFormatter());

        tf.setColumns(10);

        panel.add(label);

        panel.add(tf);

        JButton button = new JButton();

        button.setLabel("Click kMe");

        panel.add(button);

        getContentPane().add(panel, BorderLayout.SOUTH);

        pack();

        

    }

    public static void main(String[] args) {

        MyFormatterExp mfe = new MyFormatterExp();

        mfe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        mfe.setVisible(true);

    }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>