Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2006

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) {

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

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.

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2006

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.

Trädvy Permalänk
Medlem
Plats
Bromma
Registrerad
Aug 2008

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

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

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2006
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 (...) { // ... } } }

Trädvy Permalänk
Medlem
Plats
Bromma
Registrerad
Aug 2008
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

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

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

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

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2006

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!

Trädvy Permalänk
Medlem
Plats
Bromma
Registrerad
Aug 2008
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:)

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