kjakangund Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 Hei Jeg er ganske fersk i Java, så ikke slakt meg om spørsmålet er dumt. Har lett en stund nå, men finner det ikke helt ut. Jeg har noen JTextFields og noen JComboBox som jeg vil hente data fra når jeg trykker på en lagre knapp. Får ikke helt dette til. Noen som kan forklare det greit? Har en bok, men de har delt det opp så voldsomt mange forskjellige klasser at jeg mister helt oversikten. Lenke til kommentar
anderlin Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 Ingen spørsmål er dumme så lenge du har lett etter svaret først! Har du sett på metodene getText() og getSelectedIndex()/getSelectedValue()? Lenke til kommentar
kjakangund Skrevet 1. mars 2005 Forfatter Del Skrevet 1. mars 2005 (endret) Ja, har kikket litt på de. Mulig de kan brukes, og at jeg bare har brukt de feil. Jeg har en rekke tomme felter som bruker skal fylle inn, for så å trykke på lagre og disse skal skrives til fil(neste problem ). Når vinduet åpnes er feltene tomme. Og det var disse tomme feltene jeg fikk hentet ut. Altså informasjonen skal hentes ut etter at det er blitt trykket på lagre. Endret 1. mars 2005 av kjakangund Lenke til kommentar
kjakangund Skrevet 1. mars 2005 Forfatter Del Skrevet 1. mars 2005 (endret) Kan jo alltids legge ut koden min, hvis det er til noen hjelp. Er ikke så vakker lenger etter litt prøving og feiling. package gt4; import java.awt.Color; import java.awt.Container; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; /* * Created on 28.feb.2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ /** * @author Kjakan Gundersen * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class leggeTilRundetid extends JFrame{ public static final int NUMMER = 0, BILMERKE = 1, BILMODELL = 2, BANE = 3, MODIFISERT = 4, RUNDETID = 5; String bilmerke = "test2", bilmodell = "test", bane = "", rundetid = "", modifisert = ""; private JButton lagre; public leggeTilRundetid() { this.setSize(800,300); this.setLocation(250,250); this.setTitle("Legge til runde"); Container container = this.getContentPane(); Label bilMerkeLbl = new Label("Bilmerke:"); bilMerkeLbl.setLocation(50,40); bilMerkeLbl.setSize(100,20); bilMerkeLbl.setBackground(Color.white); container.add(bilMerkeLbl); String[] bilMerker = {"Acura","BMW","Ford"}; JComboBox bilmerkeCb = new JComboBox(bilMerker); bilmerkeCb.setLocation(50,60); bilmerkeCb.setSize(150,20); container.add(bilmerkeCb); Label bilModellLbl = new Label("Modell:"); bilModellLbl.setLocation(200,40); bilModellLbl.setSize(100,20); bilModellLbl.setBackground(Color.white); container.add(bilModellLbl); --> //JTextField som data skal hentes fra * JTextField bilModellTf = new JTextField(); * bilModellTf.setSize(150,20); * bilModellTf.setLocation(200,60); * bilmodell = bilModellTf.getText(); container.add(bilModellTf); Label baneLbl = new Label("Bane:"); baneLbl.setSize(100,20); baneLbl.setLocation(350,40); baneLbl.setBackground(Color.white); container.add(baneLbl); //Combobox baner String[] baner = {"Nurburing", "Grand Canyon", "Motorland"}; JComboBox baneCb = new JComboBox(baner); baneCb.setLocation(350,60); baneCb.setSize(150,20); container.add(baneCb); //Felt tid skal skrives i Label rundetidLb = new Label("Rundetid"); rundetidLb.setLocation(500,40); rundetidLb.setSize(100,20); rundetidLb.setBackground(Color.white); container.add(rundetidLb); JTextField rundetidTfld = new JTextField(); rundetidTfld.setLocation(500,60); rundetidTfld.setSize(150,20); container.add(rundetidTfld); ButtonGroup gruppe = new ButtonGroup(); JRadioButton trimmet = new JRadioButton("Trimmet"); trimmet.setLocation(650,50); trimmet.setSize(100,20); trimmet.setBackground(Color.white); gruppe.add(trimmet); container.add(trimmet); JRadioButton standard = new JRadioButton("Standard"); standard.setLocation(650,70); standard.setSize(100,20); standard.setBackground(Color.white); gruppe.add(standard); container.add(standard); //Lagre knapp JButton lagre = new JButton("Lagre"); lagre.setSize(100,40); lagre.setLocation(600,130); lagre.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { bilmodell = bilModellTf.getText(); skriveTilFil(); }}); container.add(lagre); JPanel panel = new JPanel(); panel.setBackground(Color.white); container.add(panel); this.setVisible(true); } public void skriveTilFil() { String output; File filnavn = new File("c:\\gt4data\\gt4data.dat"); //Hjelp til meg selv System.out.println("lagre"); System.out.println(bilmodell); System.out.println(bilmerke); return; } } Trenger egentlig bare å bry deg om linja med * Skal ha med informasjonen jeg får der til skriveTilFil på en eller annen måte. ****************************************************** Ok enig der, var bare en test. Mener du den skal legges til under ActionListener på knappen, eller kan den ligge under skriveTilFil(); **************************2**************************** Når jeg legger det til slik jeg har gjort nå, så får jeg beskjed om dette: Cannot refer to a non-final variable bilModellTf inside an inner class defined in a different method Endret 1. mars 2005 av kjakangund Lenke til kommentar
Mr.Garibaldi Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 (endret) Kan jo alltids legge ut koden min, hvis det er til noen hjelp. Er ikke så vakker lenger etter litt prøving og feiling. Tror det vil være hensiktsmessig... Men ikke glem å bruke [ code ] <koden her> [ /code ] så den blir leselig.... Endret 1. mars 2005 av Mr.Garibaldi Lenke til kommentar
Mr.Garibaldi Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 (endret) Du henter inn informasjonen alt for tidlig. Ikke kall .getText() før noen trykker på knappen. Slik det er nå så kalles .getText() i det vinduet blir laget, og da har jo ingen fått tid til å skrive inn en verdi. Så legg inn i skriveTilFil() metoden at den skal hente inn teksten før den skriver til fil. Ergo, deklarer tekstboksene utenfor metoden (slik at de blir klassevariabler) og kall <variabelnavn>.getText() når brukeren har fått tid til å skrive inn en verdi.... ****************************' Tror vi bør bruke nye innlegg, så det blir mer oversiktlig... Jeg ville nok hentet dem inn i skrivTilFil(), men du kan gjøre det under actionPerformed()... Du kan evt. endre skrivTilFIl() til å ta imot verdiene som du henter inn under actionPerformed()... Endret 1. mars 2005 av Mr.Garibaldi Lenke til kommentar
kjakangund Skrevet 1. mars 2005 Forfatter Del Skrevet 1. mars 2005 (endret) Ja. Har prøvd litt frem og tilbake med det også, men et eller annet gjorde jeg feil der og. Må prøve litt. Endret 1. mars 2005 av kjakangund Lenke til kommentar
Mr.Garibaldi Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 (endret) Vær så snill, lage nye poster. Blir vanskelig å følge med mange redigeringer. public class leggeTilRundetid extends JFrame{ public static final int NUMMER = 0, BILMERKE = 1, BILMODELL = 2, BANE = 3, MODIFISERT = 4, RUNDETID = 5; String bilmerke = "bmw", bilmodell = "test", bane = "", rundetid = "", modifisert = ""; ** JTextField bilModellTf = new JTextField(); private JButton lagre; public static void main(String[] args){ Object test = new leggeTilRundetid(); } public leggeTilRundetid() { //Lagre knapp JButton lagre = new JButton("Lagre"); lagre.setSize(100,40); lagre.setLocation(600,130); lagre.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { bilmodell = bilModellTf.getText(); skriveTilFil(); }}); container.add(lagre); } public void skriveTilFil() { String output; bilmodell = bilModellTf.getText(); File filnavn = new File("c:\\gt4data\\gt4data.dat"); //Hjelp til meg selv System.out.println("lagre"); System.out.println(bilmodell); System.out.println(bilmerke); return; } } Hvis du gjør det på denne måten (**) så kan du legge .getText() begge steder... [EDIT] Evt. kan du nøye deg med JTextField bilModellTf; og beholde = new JTextField() som du har den allerede. Men du må deklarer den som klassevariabel.. [/EDIT] Endret 1. mars 2005 av Mr.Garibaldi Lenke til kommentar
kjakangund Skrevet 1. mars 2005 Forfatter Del Skrevet 1. mars 2005 (endret) Hmm. La den til i skriveTilFil som du viste. Får ingen kompileringsfeil, men jeg får aldri skrevet ut system.out... i slutten av skriveTilFil Edit: Greier du å kjøre snutten din og få ut alle system.out.. linjene? Takker for hjelpen, men nå må du ikke slite deg ut på galskapen min. Endret 1. mars 2005 av kjakangund Lenke til kommentar
Mr.Garibaldi Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 (endret) Hmm. La den til i skriveTilFil som du viste. Får ingen kompileringsfeil, men jeg får aldri skrevet ut system.out... i slutten av skriveTilFil Edit: Greier du å kjøre snutten din og få ut alle system.out.. linjene? Takker for hjelpen, men nå må du ikke slite deg ut på galskapen min. Ja, den kjører som den skal hos meg... [EDIT] Den stemmer ikke hos meg forresten. Testet bare med BMW, men jeg får BMW på alle andre typer... Får ta en nærmere titt på det... [/EDIT] lagre Z3 bmw Bare hyggelig, synes det er morsomt å sysle med java (Pluss det at jeg trenger å friske opp swing/awt kunnskapene mine ) Endret 1. mars 2005 av Mr.Garibaldi Lenke til kommentar
Mr.Garibaldi Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 (endret) Er samme problem som tekstboksen. Du må lagre alle objektene som klassevariabler, og så hente inn verdien på nytt når du lagrer. [EDIT] Forresten, er dette en skoleoppgave, eller bare virker det sånn? [/EDIT] Endret 1. mars 2005 av Mr.Garibaldi Lenke til kommentar
kjakangund Skrevet 1. mars 2005 Forfatter Del Skrevet 1. mars 2005 (endret) OK. Nå er jeg skikkelig forvirra. Kan du poste eller sende meg hele koden som du har fått til å virke. Fatter ikke hva som skjer. Får jo ingen kompileringsfeil. Edit: Hehe. neida. Har java på skolen men lager programmet mest for gøy. Vi har vel egentlig ikke kommet så langt enda. Tenkte jeg ville prøve å lage et program for å lagre rundetider i Gran Turismo 4. Gjør det kun for å lære. Endret 1. mars 2005 av kjakangund Lenke til kommentar
Mr.Garibaldi Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 OK. Nå er jeg skikkelig forvirra. Kan du poste eller sende meg hele koden som du har fått til å virke. Fatter ikke hva som skjer. Får jo ingen kompileringsfeil. Har ikke gjort mye med den, men er ikke konsekvent med hvor jeg henter verdier. Det viktigste er egentlig klassevariablene som jeg har markert med * import java.awt.Color; import java.awt.Container; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; /* * Created on 28.feb.2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ /** * @author Kjakan Gundersen * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class leggeTilRundetid extends JFrame{ public static final int NUMMER = 0, BILMERKE = 1, BILMODELL = 2, BANE = 3, MODIFISERT = 4, RUNDETID = 5; String bilmerke = "bmw", bilmodell = "test", bane = "", rundetid = "", modifisert = ""; *JTextField bilModellTf = new JTextField(); *JComboBox bilmerkeCb; *JComboBox baneCb; *JTextField rundetidTfld; private JButton lagre; public static void main(String[] args){ Object test = new leggeTilRundetid(); } public leggeTilRundetid() { this.setSize(800,300); this.setLocation(250,250); this.setTitle("Legge til runde"); Container container = this.getContentPane(); Label bilMerkeLbl = new Label("Bilmerke:"); bilMerkeLbl.setLocation(50,40); bilMerkeLbl.setSize(100,20); bilMerkeLbl.setBackground(Color.white); container.add(bilMerkeLbl); String[] bilMerker = {"Acura","BMW","Ford"}; bilmerkeCb = new JComboBox(bilMerker); bilmerkeCb.setLocation(50,60); bilmerkeCb.setSize(150,20); container.add(bilmerkeCb); Label bilModellLbl = new Label("Modell:"); bilModellLbl.setLocation(200,40); bilModellLbl.setSize(100,20); bilModellLbl.setBackground(Color.white); container.add(bilModellLbl); bilModellTf.setSize(150,20); bilModellTf.setLocation(200,60); bilmodell = bilModellTf.getText(); container.add(bilModellTf); Label baneLbl = new Label("Bane:"); baneLbl.setSize(100,20); baneLbl.setLocation(350,40); baneLbl.setBackground(Color.white); container.add(baneLbl); //Combobox baner String[] baner = {"Nurburing", "Grand Canyon", "Motorland"}; baneCb = new JComboBox(baner); baneCb.setLocation(350,60); baneCb.setSize(150,20); container.add(baneCb); //Felt tid skal skrives i Label rundetidLb = new Label("Rundetid"); rundetidLb.setLocation(500,40); rundetidLb.setSize(100,20); rundetidLb.setBackground(Color.white); container.add(rundetidLb); rundetidTfld = new JTextField(); rundetidTfld.setLocation(500,60); rundetidTfld.setSize(150,20); container.add(rundetidTfld); ButtonGroup gruppe = new ButtonGroup(); JRadioButton trimmet = new JRadioButton("Trimmet"); trimmet.setLocation(650,50); trimmet.setSize(100,20); trimmet.setBackground(Color.white); gruppe.add(trimmet); container.add(trimmet); JRadioButton standard = new JRadioButton("Standard"); standard.setLocation(650,70); standard.setSize(100,20); standard.setBackground(Color.white); gruppe.add(standard); container.add(standard); //Lagre knapp JButton lagre = new JButton("Lagre"); lagre.setSize(100,40); lagre.setLocation(600,130); lagre.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { bilmodell = bilModellTf.getText(); skriveTilFil(); }}); container.add(lagre); JPanel panel = new JPanel(); panel.setBackground(Color.white); container.add(panel); this.setVisible(true); } public void skriveTilFil() { String output; File filnavn = new File("c:\\gt4data\\gt4data.dat"); //Hjelp til meg selv System.out.println("lagre"); System.out.println(bilmodell); System.out.println(bilmerkeCb.getSelectedItem()); return; } } Lenke til kommentar
kjakangund Skrevet 1. mars 2005 Forfatter Del Skrevet 1. mars 2005 Takker så mye for hjelpen. Får studere og lære. Får holde litt øye med java delen av dette forumet tror jeg. Mulig dere ser meg igjen, når jeg skal prøve meg på fil lagring. Hehe. Takker for hjelpen igjen:) Hehe. neida. Har java på skolen men lager programmet mest for gøy. Vi har vel egentlig ikke kommet så langt enda. Tenkte jeg ville prøve å lage et program for å lagre rundetider i Gran Turismo 4. Gjør det kun for å lære. Lenke til kommentar
Mr.Garibaldi Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 Takker så mye for hjelpen. Får studere og lære. Får holde litt øye med java delen av dette forumet tror jeg. Mulig dere ser meg igjen, når jeg skal prøve meg på fil lagring. Hehe. Takker for hjelpen igjen:) Hehe. neida. Har java på skolen men lager programmet mest for gøy. Vi har vel egentlig ikke kommet så langt enda. Tenkte jeg ville prøve å lage et program for å lagre rundetider i Gran Turismo 4. Gjør det kun for å lære. Hehe, da så. Lykke til. Håper du fikk det til, og lykke til videre med filbehandlingen. Vil anbefale deg å lese tutorialene på java.sun.com. Der vil du bl.a. finne hvordan du skal ordne tekstboksene, radioknapper etc., og filbehandling... Lenke til kommentar
Frank2004 Skrevet 1. mars 2005 Del Skrevet 1. mars 2005 (endret) Du må lagre alle objektene som klassevariabler, og så hente inn verdien på nytt når du lagrer. Bare for å pirke litt, så er det nok instansvariabler du mener her. Klassevariabler er de som er deklarert som 'static', altså hører de til selve klassen og ikke et bestemt objekt. Syntes bare jeg måtte gjøre deg oppmerksom på det, ellers veldig bra, mr. Garibaldi Endret 1. mars 2005 av Frank2004 Lenke til kommentar
Mr.Garibaldi Skrevet 2. mars 2005 Del Skrevet 2. mars 2005 Du må lagre alle objektene som klassevariabler, og så hente inn verdien på nytt når du lagrer. Bare for å pirke litt, så er det nok instansvariabler du mener her. Klassevariabler er de som er deklarert som 'static', altså hører de til selve klassen og ikke et bestemt objekt. Syntes bare jeg måtte gjøre deg oppmerksom på det, ellers veldig bra, mr. Garibaldi Hehe, veldig sant. Liten brainfart fra min side der. Takk for korreksen, og rosen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå