W polu JTextField tylko liczby

0

Czesc, jestem bardzo poczatkujacy i mam maly problem ( siedze nad tym juz 2gi dzien szukam w necie i nie moge sobie sam poradzic )

Chodzi o to zeby w miejscu pola JTextField mozna bylo wprowadzac tylko liczby, nic wiecej najlepiej formatu byte oraz jak zrobic aby JTextField mial limit znakow?

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

public class www extends JFrame  {
	
	public www() {
			
		JFrame ramka = new JFrame("FMEA");
		ramka.setSize(500,500);
		
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel=new JPanel();
		ramka.add(panel);
		
		ramka.setVisible(true);
		
		panel.setLayout(null);
		
		JLabel NPWP = new JLabel("Nazwa produktu/wyrobu/procesu:");
		NPWP.setBounds(10,20,200,25);
        panel.add(NPWP);
		
		JTextField nazwaproduktu = new JTextField(10);
        nazwaproduktu.setBounds(205,22,210,20);
        panel.add(nazwaproduktu);
	
	}

	public static void main(String args[]) {
	new www();
	}
}

Znalazlem jedynie ze to sie robi poprzez JFormattedTextField lub KeyAdapter ale jak probuje tego uzyc to dalej klapa :(

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

public class www extends JFrame  {
	
	public www() {
			
		JFrame ramka = new JFrame("FMEA");
		ramka.setSize(500,500);
		
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel=new JPanel();
		ramka.add(panel);
		
		ramka.setVisible(true);
		
		panel.setLayout(null);
		
		JLabel NPWP = new JLabel("Nazwa produktu/wyrobu/procesu:");
		NPWP.setBounds(10,20,200,25);
        panel.add(NPWP);
		
		JTextField text = new JTextField();
		text.setBounds(205,22,210,20);
		panel.add(text);
		text.addKeyListener(new KeyAdapter(){
		public void keyReleased(KeyEvent e){
			
		}
		
		});

	
	
	}

	public static void main(String args[]) {
	new www();
	}
}
0

Super dzieki wszystko dziala :)

A masz moze jakas podpowiedz jeszcze jak zrobic limitowa ilosc znakow ?

0

A może zdradzisz, które z podlinkowanych rozwiązań zastosowałeś?
Na pierwszy rzut oka wszystkie podane rozwiązania mają mniejsze lub większe usterki. Można wkleić ze schowka byle co, nie sprawdzają czy wpisany String da się przekonwertować na typ byte.

0

ehhh faktycznie :) tak sie ucieszylem ze nie przyjmuje liter ze zapomnialem o tym ze to mial byc typ byte :( czyli dalej nie funkcjonuje poprawnie

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

public class www extends JFrame  {
	
	public www() {
			
		JFrame ramka = new JFrame("FMEA");
		ramka.setSize(500,500);
		
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel=new JPanel();
		ramka.add(panel);
		
		ramka.setVisible(true);
		
		panel.setLayout(null);
		
		JLabel NPWP = new JLabel("Nazwa produktu/wyrobu/procesu:");
		NPWP.setBounds(10,20,200,25);
        panel.add(NPWP);
		
		
		JTextField ptoMinimoField = new JTextField();
        ptoMinimoField.setBounds(205,22,210,20);
        panel.add(ptoMinimoField);
        ptoMinimoField.setColumns(10);
        ptoMinimoField.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                char caracter = e.getKeyChar();
                if (((caracter < '0') || (caracter > '9'))
                        && (caracter != '\b')) {
                    e.consume();
                }
            }
        });
	
	
	
	}

	public static void main(String args[]) {
	new www();
	}
}
0

Jak następnym razem nie umieścisz kodu w znacznikach <code class="java"></code>, to wątek wyląduje w koszu.

public class www extends JFrame  {
    JTextField ptoMinimoField = new JTextField();
    String txt = "";
    public www() {
    ...
        ptoMinimoField.addKeyListener(new KeyAdapter() 
        {
            public void keyReleased(KeyEvent e) 
            {
                try
                {
                    String s = (e.getKeyChar() == '\b') && (txt.length() > 0)?txt.substring(0,txt.length()):txt+e.getKeyChar();
                    Byte b = Byte.parseByte(s);
                    txt = ptoMinimoField.getText();
                }
                catch(NumberFormatException ex)
                {
                    e.consume();
                    ptoMinimoField.setText(txt);
                }

            }
        });
0

dziekuje za pomoc :)

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