java-frågor : scrollbar, att avsluta, felhantering

Permalänk
Medlem

java-frågor : scrollbar, att avsluta, felhantering

Hej! Är nästan klar med mitt lilla program och behöver hjälp med följande :

1: scrollbar,
Jag har en TextArea som sköter utskrift till användaren, och jag vill att den ska ha scrollbar eftersom utskriften inte riktigt får plats, hur gör jag? har kollat på apiet och eftersom jag är ny så förstod jag inte mycket!
2. Jag har en knapp som heter "Avsluta", när jag klickar på den vill jag att programmet ska avslutas, vad är koder för det?
3. Felhantering fungerade innan jag la till grafiken, men nu hänger datorn sig så fort man matar in något felaktigt, och här är koderna (som inte funkar tydligen):

while (!b1) { String nummerString = inruta.getText(); int nummerInt = Integer.parseInt(nummerString); try { r = personerna.get(nummerSokning(personerna, nummerInt)); b1 = true; } catch(ArrayIndexOutOfBoundsException aion) { } catch(NullPointerException np) { } }

Tacksam för svar!

Permalänk
Medlem

1) Om det är en JTextArea, dvs det är swing du använder, så ska du stoppa din JTextArea i en JScrollPane. Sedan är det scroll-panen som du ska lägga i fönstret, inte JTextArean.

2) System.exit(0); brukar avsluta ett program alldeles ypperligt.

3) Felet har antagligen inget alls att göra med grafik. Metoden Integer.parseInt(str) slänger ett java.lang.NumberFormatException ifall str inte är ett giltigt till ("" (tom sträng), "0a", "0,0" osv är ogiltiga).

Övriga saker.

Man brukar inte kalla din kodsnutt för "koderna". Det är kod, kort och gott. Din mening borde vara "här är koden (som inte fungerar tydligen)".

Java krashar väldigt sällsynt, så säg därför inte att programmet krashar. Programet hamnade troligtvis i ett undantag, vilket beror på att du helt enkelt inte har fångat ett undantag (exception) som slängts. Om du kör ditt program från kommandorad (dvs du startar med java istället för javaw) så kommer det i fönstret synas vilket undantag som slängts, och var. Där kommer du med all sannolikhet se att raden där undantaget slängdes är Integer.parseInt-raden.

Varför gör du en while-loop där? Det är sant att jag inte riktigt förstår vad du försöker göra, men att försöka om och om igen ifall du skriver fel (eftersom while-stasen bara slutar ifall man kommer till slutet på try-satsen och det inte slängs några undantag) låter helknasigt. Om det blir fel första gången så är ju inte sannolikheten stor att nästa iterering kommer fungera, eller hur?

//C

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av conio
1) Om det är en JTextArea, dvs det är swing du använder, så ska du stoppa din JTextArea i en JScrollPane. Sedan är det scroll-panen som du ska lägga i fönstret, inte JTextArean.

2) System.exit(0); brukar avsluta ett program alldeles ypperligt.

3) Felet har antagligen inget alls att göra med grafik. Metoden Integer.parseInt(str) slänger ett java.lang.NumberFormatException ifall str inte är ett giltigt till ("" (tom sträng), "0a", "0,0" osv är ogiltiga).

Övriga saker.

Man brukar inte kalla din kodsnutt för "koderna". Det är kod, kort och gott. Din mening borde vara "här är koden (som inte fungerar tydligen)".

Java krashar väldigt sällsynt, så säg därför inte att programmet krashar. Programet hamnade troligtvis i ett undantag, vilket beror på att du helt enkelt inte har fångat ett undantag (exception) som slängts. Om du kör ditt program från kommandorad (dvs du startar med java istället för javaw) så kommer det i fönstret synas vilket undantag som slängts, och var. Där kommer du med all sannolikhet se att raden där undantaget slängdes är Integer.parseInt-raden.

Varför gör du en while-loop där? Det är sant att jag inte riktigt förstår vad du försöker göra, men att försöka om och om igen ifall du skriver fel (eftersom while-stasen bara slutar ifall man kommer till slutet på try-satsen och det inte slängs några undantag) låter helknasigt. Om det blir fel första gången så är ju inte sannolikheten stor att nästa iterering kommer fungera, eller hur?

//C

Hej! Varför jag har while-loop där är att innan jag la till GUI till mitt program, så hade jag ett textbaserat-dos-program och samma kod fungerade :

System.out.println("Mata in namnet:"); Personer rr; rr = null; boolean b3; b3 = false; while (!b3) { try { rr = personerna.get(namnSokning(personerna, indata.readLine())); b3 = true; } catch(ArrayIndexOutOfBoundsException aio) { System.out.println("Det finns ingen som heter så!"); } }

Permalänk
Medlem

För avslutningsknappen, lägg till en ActionListener på den, ta sedan i actionPerformed methoden en if-sats som kollar getSource().
Om det är knappen i fråga så kör System.exit(0);

Sedan så skadar det nog inte att jobba lite extra på indenteringen.

Sedan så skulle jag rekommendera att du börjar använda dig av break och while (true)

Permalänk
Medlem

Hmms, efter ha catchat ArrayIndexOutOfBoundException så får jag nu NullPointerException, någon som vet varför?

Permalänk
Medlem

Öppenbarligen något av de metoder du använder som kastar en sådan.
Vi kan ju bara se en liten bit av koden, så eftersom vi inte vet vilken typ det är på inruta så kan det bli svårt att hjälpa så mycket.

Du nämner inte heller vad du matat in för att få det felet.
Vilken som helst av de metoder du använder i try kan kasta undantag.