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