Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: vain numeroita lukeva JTextField

juhohe [09.10.2010 14:41:31]

#

Minulla on sellainen harjoitustehtävä, että pitäisi tehdä adapteriluokalla toimiva tekstikenttä, johon ei voi kirjoittaa kuin numeroita. Hain netistä apua ja eräältä sivulta löytyi vinkki, että tuollaisella KeyEvent.consume()-metodilla voisi estää merkkien tulostumisen tekstikenttään.
Jostakin syystä se ei toimi, vaan kaikki kirjaimetkin tulostuvat siihen. Mitenköhän sen saisi toimimaan?

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

public class AdapterTest extends JFrame {
  public AdapterTest() {
    JTextField arvausKentta = new JTextField(2);
    arvausKentta.addKeyListener(new KeyAdapter() {
      public void keyPressed(KeyEvent e) {
        char c = e.getKeyChar();
        if (!(Character.isDigit(c) ||
            (c == KeyEvent.VK_BACK_SPACE) ||
            (c == KeyEvent.VK_DELETE))) {
          e.consume();
        }
      }
    });

    add(arvausKentta);
    arvausKentta.setFocusable(true);
  }

  public static void main(String[] args) {
    AdapterTest frame = new AdapterTest();
    frame.setTitle("Arvauspeli");
    frame.setSize(300, 125);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

  }

}

Jokotai [09.10.2010 19:34:13]

#

boolean onkoskirjain = Character.isLetter(character)

Ja tuosta negatiivinen tarkistus. Sitten löytyi tälläistä täältä:" http://content.liferay.com/document/api/util-java/com/liferay/util/Validator.html#isChar­(char) ":
public class Validator
extends java.lang.Object

isChar
public static boolean isChar(char c)

isChar
public static boolean isChar(java.lang.String s)

isDigit
public static boolean isDigit(char c)

isDigit
public static boolean isDigit(java.lang.String s)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta