JTextField limit znakow

0

Czesc mam krotki program w ktorym probuje zrobic limitowana ilosc znakow w JTextField. Ma ktos jakis pomysl jak to zrobic ?


import java.awt.*;
import javax.swing.*;
import javax.swing.text.PlainDocument;
import javax.swing.text.BadLocationException;
import javax.swing.text.AttributeSet;

public class swing extends JFrame
{

JTextField t = new JTextField(200); /*148 1*/
JLabel FO = new JLabel("Funkcja/opis:");
JLabel O = new JLabel("Fis:");
JFrame frame = new JFrame("FMEA");

    public swing() {

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setSize(800,700);
    frame.setVisible(true);

    frame.add(FO);
    frame.add(t);
    frame.setLayout(new GridLayout(5, 5));

    frame.add(O);
    }

    public static void main(String[] args) {

    new swing();
    }
}
1

Drobna modyfikacja kodu z tego W polu JTextField tylko liczby postu :P

0

Tak rozumiem ze chodzi Ci o to ?
Probuje teraz zrobic na podstawie tego cos co bd stringiem ale z ograniczeniem znakow np do 10


        znaczwady.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = znaczwady.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Byte b = Byte.parseByte(s);

                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }
        }); 

}
1

To była taka mała złośliwość, jest prostsze rozwiązanie:

MaskFormatter mask = new MaskFormatter("******");
JFormattedTextField tf = new JFormattedTextField(mask);
tf.setColumns(6);
0

Ehhh dobra nie radze sobie jak zwykle :( dlatego pozwolisz ze wkleje caly kod jaki udalo mi sie napisac. Chodzi mi dokladnie o to zeby JTextField nazwaproduktu = new JTextField(80); mialo ograniczenie do 150 znakow. Jak probuje uzywac tego maskFormatter to kupa bledow mi wyskakuje :|

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

public class swinga extends JFrame
{

    public swinga() {

    super("Okienka");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBackground(Color.RED);
    setSize(800,600);

    /*JScrollPane scrollPane = new JScrollPane();
    scrollPane.setViewportView();
    scrollPane.setHorizontalScrollBarPolicy(
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    scrollPane.setVerticalScrollBarPolicy(
    ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    getContentPane().add(scrollPane, java.awt.BorderLayout.CENTER);*/

    JLabel NPWP = new JLabel("Nazwa produktu/wyrobu/procesu:");
    JTextField nazwaproduktu = new JTextField(80);

    MaskFormatter mask = new MaskFormatter("******");
    JFormattedTextField nazwaproduktu = new JFormattedTextField(mask);
    nazwaproduktu.setColumns(6);

    JLabel OP = new JLabel ("Funkcja/opis");
    JTextField opis = new JTextField(80);

    JLabel PW = new JLabel("Potencjalna wada:");
    JTextField potewada = new JTextField(80);

    JLabel PSW = new JLabel("Potencjalny skutek wady:");
    JTextField poteskutwady = new JTextField(80);

    JLabel ZW = new JLabel("Znaczenie wady (Z):");
    JTextField znaczwady = new JTextField(80);

    JLabel PPW = new JLabel("Potencjalna przyczyna wady:");
    JTextField poteprzyczwady = new JTextField(80);

    JLabel RWW = new JLabel("Ryzyko wystapienia wady (R):");
    JTextField ryzyko = new JTextField(80);

    JLabel KP = new JLabel("Kontrola produktu:");
    JTextField kontrola = new JTextField(80);

    JLabel WW = new JLabel("Wykrywalnosc wady (W):");
    JTextField wykrywwady = new JTextField(80);

    JLabel LP = new JLabel("Liczba priorytetowa (LP)=Z*R*W:");
    JTextField liczbaprior = new JTextField(80);

    JLabel R = new JLabel("Rekomendacja:");
    JTextField rekomend = new JTextField(80);

    JLabel DR = new JLabel("Data realizacji [RRR-MM-DD]:");
    JTextField data = new JTextField(80);

    JLabel WY = new JLabel("Wykonawca:");
    JTextField wyk = new JTextField(80);

        znaczwady.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = znaczwady.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Byte b = Byte.parseByte(s);

                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }
        }); 

        ryzyko.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = ryzyko.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Byte b = Byte.parseByte(s);

                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }

        });
        wykrywwady.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = wykrywwady.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Byte b = Byte.parseByte(s);

                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }
        });
        /*
        liczbaprior.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = liczbaprior.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Short sh = Short.parseShort(s);
                    Short wynikShort = znaczwady;
                    wynik.setText(wynikShort.toString());
                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }
        });
       */

    getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
    /*
    getContentPane().setLayout(new GridLayout(14, 2));*/

    getContentPane().add(NPWP);
    getContentPane().add(nazwaproduktu);

    getContentPane().add(OP);
    getContentPane().add(opis);

    getContentPane().add(PW);
    getContentPane().add(potewada);

    getContentPane().add(PSW);
    getContentPane().add(poteskutwady);

    getContentPane().add(ZW);
    getContentPane().add(znaczwady);

    getContentPane().add(PPW);
    getContentPane().add(poteprzyczwady);

    getContentPane().add(RWW);
    getContentPane().add(ryzyko);

    getContentPane().add(KP);
    getContentPane().add(kontrola);

    getContentPane().add(WW);
    getContentPane().add(wykrywwady);

    getContentPane().add(LP);
    getContentPane().add(liczbaprior);

    getContentPane().add(R);
    getContentPane().add(rekomend);

    getContentPane().add(DR);
    getContentPane().add(data);

    getContentPane().add(WY);
    getContentPane().add(wyk);

    setVisible(true);
    }

    public static void main(String[] args) {
    new swinga();
    }
}
1
    JFormattedTextField nazwaproduktu = null;

    try
    {
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<160;i++)
        {
            sb.append("*");
        }
        MaskFormatter mask = new MaskFormatter(sb.toString());
        nazwaproduktu = new JFormattedTextField(mask);
        nazwaproduktu.setColumns(80);
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
0

DZIEKUJE !! dziala super :)
mialbym jeszcze pytanie bo udalo mi sie stworzyc za pomoca neta cos takiego tylko wyskakuje blad czy moglbys zerknac co jest nie tak :) wlasciwie wg mnie chodzi o to jak polaczyc ta nowa klase JTextFieldCharLimited z klasa swinga

import java.awt.*;
import javax.swing.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.text.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
import javax.swing.text.AttributeSet;

public class swinga extends JFrame

{

    public class JTextFieldCharLimit extends plainDocument {

    private int limit;

    public JTextFieldCharLimit(int limitation)
    {
        this.limit = limitation;
    }
    public  void insertString(int offset, String str, AttrubuteSet set) throws BadlocationException
    {
        if(str == null)
        {
            return;
        } else if((getLength()+ str.length())<= limit)
        {
            str = str.toUpperCase();
            super.insertString(offset,str,set);
        }
    }

    public swinga() {

    super("Okienka");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(800,600);

    JLabel NPWP = new JLabel("Nazwa produktu/wyrobu/procesu:");
    JTextField nazwaproduktu = new JTextField(80);

    nazwaproduktu.setDocument( new JTextFieldCharLimit(5));

    JLabel OP = new JLabel ("Funkcja/opis");
    JTextField opis = new JTextField(80);

    JLabel PW = new JLabel("Potencjalna wada:");
    JTextField potewada = new JTextField(80);

    JLabel PSW = new JLabel("Potencjalny skutek wady:");
    JTextField poteskutwady = new JTextField(80);

    JLabel ZW = new JLabel("Znaczenie wady (Z):");
    JTextField znaczwady = new JTextField(80);

    JLabel PPW = new JLabel("Potencjalna przyczyna wady:");
    JTextField poteprzyczwady = new JTextField(80);

    JLabel RWW = new JLabel("Ryzyko wystapienia wady (R):");
    JTextField ryzyko = new JTextField(80);

    JLabel KP = new JLabel("Kontrola produktu:");
    JTextField kontrola = new JTextField(80);

    JLabel WW = new JLabel("Wykrywalnosc wady (W):");
    JTextField wykrywwady = new JTextField(80);

    JLabel LP = new JLabel("Liczba priorytetowa (LP)=Z*R*W:");
    JTextField liczbaprior = new JTextField(80);

    JLabel R = new JLabel("Rekomendacja:");
    JTextField rekomend = new JTextField(80);

    JLabel DR = new JLabel("Data realizacji [RRR-MM-DD]:");
    JTextField data = new JTextField(80);

    JLabel WY = new JLabel("Wykonawca:");
    JTextField wyk = new JTextField(80);

        znaczwady.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = znaczwady.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Byte b = Byte.parseByte(s);

                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }
        }); 

        ryzyko.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = ryzyko.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Byte b = Byte.parseByte(s);

                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }

        });
        wykrywwady.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = wykrywwady.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Byte b = Byte.parseByte(s);

                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }
        });
        /*
        liczbaprior.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent event) {
                char character = event.getKeyChar();
                if (((character < '0') || (character > '9')) && (character != '\b')) {
                    event.consume();
                }

                try {
                    String txt = liczbaprior.getText();
                    String s = (character == '\b') && (txt.length() > 0) ? txt.substring(0, txt.length()) : txt + character;
                    Short sh = Short.parseShort(s);
                    Short wynikShort = znaczwady;
                    wynik.setText(wynikShort.toString());
                } catch(NumberFormatException ex) {
                    event.consume();
                }
            }
        });
       */

    getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
    /*
    getContentPane().setLayout(new GridLayout(14, 2));*/

    getContentPane().add(NPWP);
    getContentPane().add(nazwaproduktu);

    getContentPane().add(OP);
    getContentPane().add(opis);

    getContentPane().add(PW);
    getContentPane().add(potewada);

    getContentPane().add(PSW);
    getContentPane().add(poteskutwady);

    getContentPane().add(ZW);
    getContentPane().add(znaczwady);

    getContentPane().add(PPW);
    getContentPane().add(poteprzyczwady);

    getContentPane().add(RWW);
    getContentPane().add(ryzyko);

    getContentPane().add(KP);
    getContentPane().add(kontrola);

    getContentPane().add(WW);
    getContentPane().add(wykrywwady);

    getContentPane().add(LP);
    getContentPane().add(liczbaprior);

    getContentPane().add(R);
    getContentPane().add(rekomend);

    getContentPane().add(DR);
    getContentPane().add(data);

    getContentPane().add(WY);
    getContentPane().add(wyk);

    setVisible(true);
    }

    public static void main(String[] args) {
    new swinga();
    new JTextFieldCharLimit(int limitation);
    }
}

?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0