Gnurk! Skrevet 29. april 2012 Forfatter Del Skrevet 29. april 2012 herregud, tusentakk! endeling funker det! ble veldig glad nå, et lite spørsmål hvis du har lett peiling, dette med å velge plassering for knapper, siden jeg bruker en container så får jeg ikke brukt .setLocation(int,int) uten å sette container layoutmanager=null, finnes det noen metoder som jeg ikke trenger å gjøre det for å sette location? Lenke til kommentar
Gnurk! Skrevet 29. april 2012 Forfatter Del Skrevet 29. april 2012 (endret) Jeg er foresten "ferdi" me de 2 classene, men de fungerer ikke? den første som lager sporsmaalene package aaretssiste; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import org.apache.commons.io.FileUtils; //prover aa importere jave commons import aaretssiste.docs.org.apache.commons.io.*; import aaretssiste.docs.org.*; public class Mekkspm extends JPanel implements ActionListener{ private JButton leggtilKnapp, nesteSpmKnapp, leggtilKnapp2, avsluttKnapp, resetKnapp; // innskriv er tekst sotte opp, skriving er der brukeren skriver inn public JTextField innSkriv, skriving; private String[] spmTabell; private String str; private int ant; public Qnnskap vindu; public Mekkspm(Qnnskap vindu) throws IOException{ JFrame frame = new JFrame("Lagsporsmaltilquiz"); this.vindu=vindu; setPreferredSize(new Dimension(800,600)); innSkriv=new JTextField(); skriving=new JTextField(); innSkriv.setPreferredSize(new Dimension(360,60)); skriving.setPreferredSize(new Dimension(400,60)); innSkriv.setEditable(false); avsluttKnapp=new JButton("Avslutt"); avsluttKnapp.addActionListener((ActionListener) this); add(avsluttKnapp); nesteSpmKnapp=new JButton("Legg til neste SPM"); nesteSpmKnapp.addActionListener((ActionListener) this); add(nesteSpmKnapp); leggtilKnapp=new JButton("Legg til spm"); leggtilKnapp.addActionListener((ActionListener) this); leggtilKnapp2=new JButton("Legg til svar"); leggtilKnapp2.addActionListener((ActionListener) this); add(skriving); add(innSkriv); add(leggtilKnapp); add(leggtilKnapp2); resetKnapp=new JButton("Fjern alle sporsmaal og svar"); resetKnapp.addActionListener((ActionListener) this); add(resetKnapp); avsluttKnapp.setEnabled(true); leggtilKnapp2.setEnabled(false); nesteSpmKnapp.setEnabled(true); leggtilKnapp.setEnabled(false); //finn ut antall eksisterende sporsmaal String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); if(f.exists()){ FileUtils.readFileToString(f,str); ant = Integer.parseInt(str); } } //lager sporsmaal og "saver det" public void leggTilSpm() throws IOException{ str=skriving.getText(); skriving.setText(""); ant++; String fileStorage = System.getProperty("user.home"); String filString="/Spm"+ant+".txt"; File f = new File(fileStorage + filString); FileUtils.writeStringToFile(f,str); } //lager svar ("saver det") public void leggTilSvar() throws IOException{ str=skriving.getText(); skriving.setText(""); String fileStorage = System.getProperty("user.home"); String filString = "/Svar"+ant+".txt"; File f=new File(fileStorage + filString); FileUtils.writeStringToFile(f, str); } //actionlistener til knappene, her legger jeg inn ALT som skal være knyttet til å skje ved knapptrykk/etterpå (inkludert kjør andre metoder) public void actionPerformed(ActionEvent e){ if(e.getSource()==nesteSpmKnapp){ innSkriv.setText("Skriv inn sporsmaalet"); skriving.setText(""); repaint(); avsluttKnapp.setEnabled(false); leggtilKnapp2.setEnabled(false); nesteSpmKnapp.setEnabled(false); leggtilKnapp.setEnabled(true); } //legger til sporsmaal lager ny fil om den ikke allerede eksisterer. else if(e.getSource()==leggtilKnapp){ try { leggTilSpm(); } catch (IOException e1) { e1.printStackTrace(); } avsluttKnapp.setEnabled(false); leggtilKnapp2.setEnabled(true); nesteSpmKnapp.setEnabled(false); leggtilKnapp.setEnabled(false); innSkriv.setText("Sporsmaal lagret, skriv inn svar"); } //legger til svar, lager ny fil om den ikke allerede eksisterer. else if(e.getSource()==leggtilKnapp2){ try { leggTilSvar(); } catch (IOException e1) { e1.printStackTrace(); } avsluttKnapp.setEnabled(true); leggtilKnapp2.setEnabled(false); nesteSpmKnapp.setEnabled(true); leggtilKnapp.setEnabled(false); innSkriv.setText("Sporsmaal og svar lagret,"+"\n"+"avslutt eller lag nytt spm"); } else if(e.getSource()==avsluttKnapp){ //Sletter først AntSpm.txt for så å erstatte med korrekt antall spm så avslutter det programmet String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); if(f.exists()){ str=""+ant; try { FileUtils.forceDelete(f); } catch (IOException e1) { e1.printStackTrace(); } } try { FileUtils.writeStringToFile(f,str); } catch (IOException e1) { e1.printStackTrace(); } System.exit(0); } else if(e.getSource()==resetKnapp){ String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); ant=0; str=""+ant; try { FileUtils.writeStringToFile(f,str); } catch (IOException e1) { e1.printStackTrace(); } } } } } og den andre som leser av package aaretssiste; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; public class Quiz extends JPanel implements ActionListener { private JButton avsluttKnapp, angiSvarKnapp, nesteSpmKnapp; private Qnnskap vindu; private JTextArea innput, spmViser; private boolean rett; private int currentSpm, teller, antSpm, antRette; private String[] spmTabellen, svarTabellen; private String svarInn, svar, riktigSvar, spm, filString, antSpmStr; public Quiz(Qnnskap vindu) throws IOException{ JFrame frame = new JFrame("Quiz"); this.vindu=vindu; setPreferredSize(new Dimension(800,600)); avsluttKnapp=new JButton("Avslutt"); avsluttKnapp.addActionListener((ActionListener) this); add(avsluttKnapp); angiSvarKnapp=new JButton("Gi svar og gaa til neste"); angiSvarKnapp.addActionListener((ActionListener) this); add(angiSvarKnapp); nesteSpmKnapp=new JButton("Neste sporsmaal"); nesteSpmKnapp.addActionListener((ActionListener) this); add(nesteSpmKnapp); spmViser = new JTextArea(); spmViser.setPreferredSize(new Dimension(400,60)); innput=new JTextArea(); innput.setPreferredSize(new Dimension(300,60)); add(spmViser); add(innput); nesteSpmKnapp.setEnabled(true); nesteSpmKnapp.setText("Start Quizzen"); angiSvarKnapp.setEnabled(false); spmViser.setText("Trykk Start quizzen for aa starte quizzen!"); spmViser.setEditable(false); String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); if(f.exists()){ FileUtils.readFileToString(f,antSpmStr); antSpm = Integer.parseInt(antSpmStr); } //henter inn spm og legger dem i tabellen, gjor det samme med svar String[] spmTabellen=new String[antSpm]; for(int p=0;p&--#60;antSpm;p++){ teller++; fileStorage = System.getProperty("user.home"); filString="/Spm"+teller+".txt"; f = new File(fileStorage + filString); FileUtils.readFileToString(f,spmTabellen[p]); filString="/Svar"+teller+".txt"; f = new File(fileStorage + filString); FileUtils.readFileToString(f,svarTabellen[p]); } //spmViser.setText(svarTabellen[0]); } //forandrer teksten ift neste tekst, og adder paa den esensielle int variablen currentSpm (som er veldig relevant ift vor man er i quizzen), er og denne som tar hensyn til om quizzen er ferdig public void nesteSpm(){ innput.setText(""); if(currentSpm&--#60;antSpm){ spmViser.setText(spmTabellen[currentSpm]); currentSpm++; } else{ spmViser.setText("Spill fullført du hadde "+antRette+" riktige av "+antSpm+" sporsmaal totalt."); nesteSpmKnapp.setEnabled(false); angiSvarKnapp.setEnabled(false); } } //Tester om Stringet g er likt svaret fra svarTabellen (den gaar etter currentSpm) (equalsignorecase gjor at det ikke blir case-sensitive, feilstaving vil desverre fortsatt skape problemer) public boolean rett(String g){ riktigSvar=svarTabellen[currentSpm]; if(g.equalsIgnoreCase(riktigSvar)){ return true; } else return false; } public void actionPerformed(ActionEvent e){ //angisvar legger til tekst for rett/galt, kjorer metode for aa sjekke om rett/galt, legger til antRette og legger til antallspm totalt. if(e.getSource()==angiSvarKnapp){ svar=innput.getText(); rett=rett(svar); antSpm++; if(rett){ antRette++; spmViser.setText("Du hadde rett!"); } else{ spmViser.setText("Du hadde feil!"); } nesteSpmKnapp.setEnabled(true); angiSvarKnapp.setEnabled(false); repaint(); } else if(e.getSource()==avsluttKnapp){ System.exit(0); } else if(e.getSource()==nesteSpmKnapp){ if(currentSpm==0) nesteSpmKnapp.setText("Start Quizzen"); nesteSpm(); if(currentSpm&--#60;antSpm){ nesteSpmKnapp.setEnabled(false); angiSvarKnapp.setEnabled(true); } } } } Det virker som 1'eren ikke egentli lager disse filene, men jeg vet ikke hvorfor, fiølge file utils så skal den lage fila om den ikke eksisterer allerede. kan si at jeg eksporterte som jar fil for aa teste og fant ut at den faktisk ikke editer noen tekst filer om de eksisterer eller ei i det hele tatt. Endret 29. april 2012 av Gnurk(homesmasher) Lenke til kommentar
Gnurk! Skrevet 29. april 2012 Forfatter Del Skrevet 29. april 2012 ok jeg har "feilsøkt" dem en del nå og oppdatert koden, og har funnet ut at readFileToString f.eks returnerer "null" hvorfor? (jeg har prøvd å oppdatere filen etc) er det feil av meg å kalle dem .txt? (jeg tester og med å legge .txt i den ene filens navn, men finner ikke uansett) her er oppdaterte koder forresten, håper VIRKELI noen kan hjelpe, men forstår vist ikke og. package aaretssiste; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; public class Quiz extends JPanel implements ActionListener { private JButton avsluttKnapp, angiSvarKnapp, nesteSpmKnapp; private Qnnskap vindu; private JTextArea innput, spmViser; private boolean rett; private int currentSpm, teller, antSpm, antRette; private String[] spmTabellen, svarTabellen; private String svarInn, svar, riktigSvar, spm, filString, antSpmStr; public Quiz(Qnnskap vindu) throws IOException{ JFrame frame = new JFrame("Quiz"); this.vindu=vindu; setPreferredSize(new Dimension(1000,600)); avsluttKnapp=new JButton("Avslutt"); avsluttKnapp.addActionListener((ActionListener) this); add(avsluttKnapp); angiSvarKnapp=new JButton("Gi svar og gaa til neste"); angiSvarKnapp.addActionListener((ActionListener) this); add(angiSvarKnapp); nesteSpmKnapp=new JButton("Neste sporsmaal"); nesteSpmKnapp.addActionListener((ActionListener) this); add(nesteSpmKnapp); spmViser = new JTextArea(); spmViser.setPreferredSize(new Dimension(400,60)); innput=new JTextArea(); innput.setPreferredSize(new Dimension(300,60)); add(spmViser); add(innput); nesteSpmKnapp.setEnabled(true); nesteSpmKnapp.setText("Start Quizzen"); angiSvarKnapp.setEnabled(false); spmViser.setText("Trykk Start quizzen for aa starte quizzen!"); spmViser.setEditable(false); String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); if(f.exists()){ FileUtils.readFileToString(f,antSpmStr); String i = FileUtils.readFileToString(f,antSpmStr); int antSpm =Integer.parseInt(i); spmViser.setText("hei"+antSpmStr); } //henter inn spm og legger dem i tabellen, gjor det samme med svar String[] spmTabellen=new String[antSpm]; for(int p=0;p<antSpm;p++){ teller++; fileStorage = System.getProperty("user.home"); filString="/Spm"+teller+".txt"; f = new File(fileStorage + filString); FileUtils.readFileToString(f,spmTabellen[p]); filString="/Svar"+teller+".txt"; f = new File(fileStorage + filString); FileUtils.readFileToString(f,svarTabellen[p]); } } //forandrer teksten ift neste tekst, og adder paa den esensielle int variablen currentSpm (som er veldig relevant ift vor man er i quizzen), er og denne som tar hensyn til om quizzen er ferdig public void nesteSpm(){ innput.setText(""); if(currentSpm<antSpm){ spmViser.setText(spmTabellen[currentSpm]); currentSpm++; } else{ spmViser.setText("Spill fullført du hadde "+antRette+" riktige av "+antSpm+" sporsmaal totalt."); nesteSpmKnapp.setEnabled(false); angiSvarKnapp.setEnabled(false); } } //Tester om Stringet g er likt svaret fra svarTabellen (den gaar etter currentSpm) (equalsignorecase gjor at det ikke blir case-sensitive, feilstaving vil desverre fortsatt skape problemer) public boolean rett(String g){ riktigSvar=svarTabellen[currentSpm]; if(g.equalsIgnoreCase(riktigSvar)){ return true; } else return false; } public void actionPerformed(ActionEvent e){ //angisvar legger til tekst for rett/galt, kjorer metode for aa sjekke om rett/galt, legger til antRette og legger til antallspm totalt. if(e.getSource()==angiSvarKnapp){ svar=innput.getText(); rett=rett(svar); antSpm++; if(rett){ antRette++; spmViser.setText("Du hadde rett!"); } else{ spmViser.setText("Du hadde feil!"); } nesteSpmKnapp.setEnabled(true); angiSvarKnapp.setEnabled(false); repaint(); } else if(e.getSource()==avsluttKnapp){ System.exit(0); } else if(e.getSource()==nesteSpmKnapp){ if(currentSpm==0) nesteSpmKnapp.setText("Start Quizzen"); nesteSpm(); if(currentSpm<antSpm){ nesteSpmKnapp.setEnabled(false); angiSvarKnapp.setEnabled(true); } } } } og den som lager: package aaretssiste; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import org.apache.commons.io.FileUtils; //prover aa importere jave commons import aaretssiste.docs.org.apache.commons.io.*; import aaretssiste.docs.org.*; public class Mekkspm extends JPanel implements ActionListener{ private JButton leggtilKnapp, nesteSpmKnapp, leggtilKnapp2, avsluttKnapp, resetKnapp; // innskriv er tekst sotte opp, skriving er der brukeren skriver inn public JTextField innSkriv, skriving; private String[] spmTabell; private String str; private int ant; public Qnnskap vindu; public Mekkspm(Qnnskap vindu) throws IOException{ JFrame frame = new JFrame("Lagsporsmaltilquiz"); this.vindu=vindu; setPreferredSize(new Dimension(1000,600)); innSkriv=new JTextField(); skriving=new JTextField(); innSkriv.setPreferredSize(new Dimension(360,60)); skriving.setPreferredSize(new Dimension(400,60)); innSkriv.setEditable(false); avsluttKnapp=new JButton("Avslutt"); avsluttKnapp.addActionListener((ActionListener) this); add(avsluttKnapp); nesteSpmKnapp=new JButton("Legg til neste SPM"); nesteSpmKnapp.addActionListener((ActionListener) this); add(nesteSpmKnapp); leggtilKnapp=new JButton("Legg til spm"); leggtilKnapp.addActionListener((ActionListener) this); leggtilKnapp2=new JButton("Legg til svar"); leggtilKnapp2.addActionListener((ActionListener) this); add(skriving); add(innSkriv); add(leggtilKnapp); add(leggtilKnapp2); resetKnapp=new JButton("Fjern alle sporsmaal og svar"); resetKnapp.addActionListener((ActionListener) this); add(resetKnapp); avsluttKnapp.setEnabled(true); leggtilKnapp2.setEnabled(false); nesteSpmKnapp.setEnabled(true); leggtilKnapp.setEnabled(false); //finn ut antall eksisterende sporsmaal String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); if(f.exists()){ FileUtils.readFileToString(f,str); // ant = Integer.parseInt(str); String i = FileUtils.readFileToString(f,str); int ant =Integer.parseInt(i); } } //lager sporsmaal og "saver det" public void leggTilSpm() throws IOException{ str=skriving.getText(); skriving.setText(""); ant++; String fileStorage = System.getProperty("user.home"); String filString="/Spm"+ant+".txt"; File f = new File(fileStorage + filString); FileUtils.writeStringToFile(f,str); } //lager svar ("saver det") public void leggTilSvar() throws IOException{ str=skriving.getText(); skriving.setText(""); String fileStorage = System.getProperty("user.home"); String filString = "/Svar"+ant+".txt"; File f=new File(fileStorage + filString); FileUtils.writeStringToFile(f, str); } //actionlistener til knappene, her legger jeg inn ALT som skal være knyttet til å skje ved knapptrykk/etterpå (inkludert kjør andre metoder) public void actionPerformed(ActionEvent e){ if(e.getSource()==nesteSpmKnapp){ innSkriv.setText("Skriv inn sporsmaalet"); skriving.setText(""); repaint(); avsluttKnapp.setEnabled(false); leggtilKnapp2.setEnabled(false); nesteSpmKnapp.setEnabled(false); leggtilKnapp.setEnabled(true); } //legger til sporsmaal lager ny fil om den ikke allerede eksisterer. else if(e.getSource()==leggtilKnapp){ try { leggTilSpm(); } catch (IOException e1) { e1.printStackTrace(); } avsluttKnapp.setEnabled(false); leggtilKnapp2.setEnabled(true); nesteSpmKnapp.setEnabled(false); leggtilKnapp.setEnabled(false); innSkriv.setText("Sporsmaal lagret, skriv inn svar"); } //legger til svar, lager ny fil om den ikke allerede eksisterer. else if(e.getSource()==leggtilKnapp2){ try { leggTilSvar(); } catch (IOException e1) { e1.printStackTrace(); } avsluttKnapp.setEnabled(true); leggtilKnapp2.setEnabled(false); nesteSpmKnapp.setEnabled(true); leggtilKnapp.setEnabled(false); innSkriv.setText("Sporsmaal og svar lagret,"+"\n"+"avslutt eller lag nytt spm"); } else if(e.getSource()==avsluttKnapp){ //Sletter først AntSpm.txt for så å erstatte med korrekt antall spm så avslutter det programmet String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); if(f.exists()){ str=""+ant; try { FileUtils.forceDelete(f); } catch (IOException e1) { e1.printStackTrace(); } } try { FileUtils.writeStringToFile(f,str); } catch (IOException e1) { e1.printStackTrace(); } System.exit(0); } else if(e.getSource()==resetKnapp){ String fileStorage = System.getProperty("user.home"); File f = new File(fileStorage + "/AntSpm.txt"); ant=0; str=""+ant; try { FileUtils.writeStringToFile(f,str); } catch (IOException e1) { e1.printStackTrace(); } } } } Kan jo legge til at ingen av dem fungerer som dem skal, så tydelig at det noe jeg ikke har graspet her. 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å