Permalänk
Medlem

Stänga av try sats

Hej!
Jag har använt mig utav en try sats för att kolla så att det är en int man matar in i en textbox.

public void keyReleased(KeyEvent arg0) { try{ Integer.parseInt(((JTextField)arg0.getSource()).getText()); if(((JTextField)arg0.getSource()).getName() == "txtBirth"){ } catch (NumberFormatException e) { System.out.println("not int"); }

Men om jag nu vill kunna mata in något i en annan textbox som får vara annat än en int så funkar inte detta, så hur ska jag lösa detta?

Jag trodde att jag bara kunde lägga det utanför try-satsen men så enkelt var det inte

Spelar inte ens ngn roll om jag lägger det i ett helt annat event

public void keyTyped(KeyEvent arg0) {

Permalänk
Medlem

det ser ut som att du castar resultatet av getText() till JTextField och har andra småfel i koden.

Testa:

public void keyReleased(KeyEvent arg0) { JTextField textfield = (JTextField)arg0.getSource(); if (textfield.getName().equals("txtBirth")) { try { Integer.parseInt(textfield.getText()); } catch (NumberFormatException e) { System.out.println("not int"); } } else if (...) { try { // ... } catch (...) { // ... } } }

edit: du castade antagligen rätt men det är hursomhelst lättare -- och mer effektivt -- att casta en gång till en ny variabel.

förtydligande: felet du gjorde var att ha if-satsen inuti try-satsen. du körde parseInt på alla JTextFields som var anslutna till event listenern.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Okej, det ger samma effekt som tidigare kod

try{ textfield = (JTextField)arg0.getSource(); Integer.parseInt(textfield.getText()); // Integer.parseInt(((JTextField)arg0.getSource()).getText()); if(textfield.getName() == "txtBirth"){ } catch (NumberFormatException e) { System.out.println("not int"); }

men om jag nu vill ha

if(textfield.getName() == "txtName"){

så får jag även not int på den också, hur ska jag lösa detta? för det är ju bara txtBirth som jag vill kolla om den bara bestod av int:ar. txtName vill jag ju ska vara en sträng.

Permalänk

Du kan inte ifsatsa catchen... Du måste ta if runt hela, inklusive try

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av KurreKula
Du kan inte ifsatsa catchen... Du måste ta if runt hela, inklusive try

Hur menar du KurreKula?
Jag har testat göra som Teknocide sa och göra en en trysats i varje if-sats och en if sats utan en try sats men det hjälper inte, jag får fortfarande not int på den som jag vill ska få vara en sträng

Jag har testat göra som

Citat:

Ursprungligen inskrivet av Teknocide

Testa:

public void keyReleased(KeyEvent arg0) { JTextField textfield = (JTextField)arg0.getSource(); if (textfield.getName().equals("txtBirth")) { try { Integer.parseInt(textfield.getText()); } catch (NumberFormatException e) { System.out.println("not int"); } } else if (...) { try { // ... } catch (...) { // ... } } }

Permalänk
Citat:

Ursprungligen inskrivet av mojito
Hur menar du KurreKula?
Jag har testat göra som Teknocide sa och göra en en trysats i varje if-sats och en if sats utan en try sats men det hjälper inte, jag får fortfarande not int på den som jag vill ska få vara en sträng

Jag har testat göra som

Det borde funka... Låter som det är något fel med namnen på boxarna

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Det är väl i sådana fall om du satt name på flera textfält till "txtBirth".

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Ni har helt rätt, det hade smygt in ett litet fel namn på boxen, tack ska ni ha nu fungerar det som jag vill!

Permalänk
Citat:

Ursprungligen inskrivet av mojito
Ni har helt rätt, det hade smygt in ett litet fel namn på boxen, tack ska ni ha nu fungerar det som jag vill!

Kul att det löste sig för dig:)

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase