Forum » Programiranje » [Java] Uporaba FileChooserja
[Java] Uporaba FileChooserja
Bela01 ::
Uporabnik na začetku najprej vpiše svoje ime in priimek, ter izbere datoteko s katere bo reševal naloge. Za iskanje datoteke sem uporabla FileChooserja, ki pa očitno ni čist vredu nastavljen v actionPerformed. Ali mogoče kdo vidi napako oz. v čem je finta. Ko klikne nato uporabnik na gumb Ok, se tam sproži branje iz datoteke. Upam, da sem tudi tam pravilno napisala (za točno določeno datoteko).
Pa še celotna koda:
Pa še celotna koda:
import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.border.*; import java.util.*; import javax.swing.filechooser.*; public class ResevanjeNalog extends JApplet implements ItemListener, ActionListener { String[] a; String pres = " "; //vprašanje String[] n = new String[100]; //odgovori String[][] o = new String[100][3]; //točke za pravilne odgovore int tocke = 0; //pravilni odgovor int[] odg = new int[100]; //ime datoteke slike String[] sl = new String[100]; String[] crka = new String[3]; JFrame frame1 = new JFrame("Reševanje nalog"); JFrame frame2 = new JFrame("Reševanje nalog"); JFrame frame3 = new JFrame("Reševanje nalog"); Container app; File f; //zaporedna številka naloge int zap = 0; //število nalog int st = 0; //Labela s tekstom, nalogo in odgovorom JLabel tekst = new JLabel(""); JLabel naloga = new JLabel(""); JLabel odgovor = new JLabel(""); private String Preveri_g = "Preveri_g"; private String Naprej_g = "Naprej_g"; private String OK_g = "OK_g"; private String Preklici_g = "Preklici_g"; private String text_o = "text_o"; private String imedat; private String Load_g = "Load_g"; //ustvarimo gumbe JRadioButton[] rgumb = new JRadioButton[3];; JButton preveri, naprej, ok, preklici, load; //grupa, ki bo združila radiobutone - rgumbe, da bodo sodelovali med seboj ButtonGroup grupa = new ButtonGroup(); //spremenljivka za slikice Toolkit tool = Toolkit.getDefaultToolkit(); Image slika; Icon ikona; JLabel slikaL; //ustvarimo panelo, ki bo nosila ostale v sebi JPanel namizje = new JPanel(new BorderLayout()); JPanel namizje1 = new JPanel(new BorderLayout()); JPanel namizje2 = new JPanel(new BorderLayout()); JPanel resitev = new JPanel(new BorderLayout()); //ostale panele JPanel navodilo = new JPanel(new BorderLayout()); JPanel nosilna = new JPanel(new GridLayout()); JPanel odgovori = new JPanel(new GridLayout(3, 1)); JPanel primeri = new JPanel(new GridLayout()); JPanel gumbi = new JPanel(new GridLayout(1, 5)); //applet JPanel applet = new JPanel(new GridLayout(3,1)); JPanel naslov = new JPanel(new BorderLayout()); JLabel besedilo4; JLabel besedilo5; JLabel bes; private String procent; //začetni applet JPanel ogrodje1 = new JPanel(new GridLayout(5,1)); JPanel ogrodje2 = new JPanel(new GridLayout(1,2)); JPanel ogrodje3 = new JPanel(new GridLayout(1,2)); JPanel ogrodje4 = new JPanel(new GridLayout(1,3)); JPanel ogrodje5 = new JPanel(new GridLayout(1,5)); JLabel bes1 = new JLabel(""); JLabel bes2 = new JLabel(""); JLabel bes3 = new JLabel(""); JLabel bes4 = new JLabel(""); JTextField textokno1 = new JTextField(10); JTextField textokno2 = new JTextField(10); JTextField textokno3 = new JTextField(10); private String ime, priimek; public void Oblika() { navodilo.setPreferredSize(new Dimension(350, 50)); navodilo.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 0, 5, 0), BorderFactory.createEtchedBorder())); odgovori.setPreferredSize(new Dimension(200, 250)); odgovori.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createTitledBorder( LineBorder.createGrayLineBorder(), "Možni odgovori"))); primeri.setPreferredSize(new Dimension(200, 250)); primeri.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createTitledBorder( LineBorder.createGrayLineBorder(), "Slika"))); nosilna.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 0, 5, 0), BorderFactory.createEtchedBorder())); resitev.setPreferredSize(new Dimension(350, 50)); resitev.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(1, 0, 1, 0), BorderFactory.createEtchedBorder())); namizje1.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5)); gumbi.setPreferredSize(new Dimension(350, 50)); gumbi.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(1, 0, 1, 0), BorderFactory.createEtchedBorder())); namizje2.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5)); applet.setPreferredSize(new Dimension(80, 400)); applet.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createEtchedBorder())); naslov.setPreferredSize(new Dimension(100, 400)); naslov.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createEtchedBorder())); ogrodje1.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createEtchedBorder())); ogrodje2.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createEtchedBorder())); ogrodje3.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createEtchedBorder())); ogrodje4.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createEtchedBorder())); ogrodje5.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createEtchedBorder())); } //metoda, ki ugotavlja stanje stikal public void itemStateChanged(ItemEvent event) { tekst.setText(""); } //metoda ki ugotovi stanje gumbov public void actionPerformed(ActionEvent event) { int i; if (event.getActionCommand().equals(Load_g)) { JFileChooser chooser = new JFileChooser(); ExampleFileFilter filter = new ExampleFileFilter(); filter.addExtension("txt"); filter.setDescription("Tekstovne datoteke"); chooser.setFileFilter(filter); int returnVal = chooser.showOpenDialog(this); if(returnVal == JFileChooser.APPROVE_OPTION) { f = chooser.getSelectedFile(); } } //klik na gumb prekliči if (event.getActionCommand().equals(Preklici_g)) { frame1.dispose(); } //klik na gumb OK if (event.getActionCommand().equals(OK_g)) { //shranimo vneseno ime datoteke imedat = textokno3.getText(); ime = textokno1.getText(); priimek = textokno2.getText(); try { BufferedReader datoteka = new BufferedReader(new FileReader(f)); frame1.dispose(); st = 0; String vrstica; try { while (( vrstica = datoteka.readLine()) != null) { //prebereš vprašanje in ga shraniš n[st] = vrstica; //prebereš možne odgovore in jih shraniš for (i = 0; i < 3; i++) o[st][i] = datoteka.readLine(); //prebereš še številko pravilnega odgovora odg[st] = Integer.parseInt(datoteka.readLine()); //preberemo ime datoteke slike sl[st] = datoteka.readLine(); st++; } //reševanje nalog Okno2(a); } finally { datoteka.close(); } } catch(IOException e) //če datoteka, ki smo jo klicali za branje ne obstaja { textokno3.setText("Datoteke ni mogoče najti!"); } } if (event.getActionCommand().equals(Preveri_g)) { //ko uporanbik pritisne gumb preveri, se možnost izbire odgovora prepreči for (i = 0; i < 3; i++) rgumb[i].setEnabled(false); if (rgumb[odg[zap]-1].isSelected()) tekst.setText("Odgovor je pravilen!"); else if (event.getActionCommand().equals(Preveri_g)) { tekst.setText("Odgovor ni pravilen! Pravilen je odgovor "+(odg[zap])); } } //klik na gumb naprej if (event.getActionCommand().equals(Naprej_g)) { //omogočimo gumbe za odgovore for (i = 0; i < 3; i++) rgumb[i].setEnabled(true); //preverimo pravilnost odgovora if (rgumb[odg[zap]-1].isSelected()) tocke++; if (zap < st-1) { zap++; i = zap+1; naloga.setText(i+". "+n[zap]); for (i = 0; i < 3; i++) { rgumb[i].setText(crka[i]+o[zap][i]); } primeri.remove(slikaL); slika = tool.getImage(sl[zap]+".jpg"); ikona = new ImageIcon(slika); slikaL = new JLabel(ikona); primeri.add(slikaL); for (int k = 0; k < 3; k++) { grupa.remove(rgumb[k]); rgumb[k].setSelected(false); grupa.add(rgumb[k]); } } else { bes.setText(pres+"Pozdravljen/-a "+ime+" "+priimek+"!"); besedilo4.setText(pres+"Reševal/-a si kontrolno nalogo shranjeno v datoteki '"+imedat+".txt'."); procent = Integer.toString((tocke*100)/st); besedilo5.setText(pres+"Dosegel/-la si "+procent+"%."); frame2.dispose(); } } } //glavno namizje okna2 public JPanel NamizjeOkna2(){ crka[0] = "a) "; crka[1] = "b) "; crka[2] = "c) "; int i = zap + 1; naloga.setText(i+". "+n[zap]); navodilo.add(new JLabel(pres), BorderLayout.WEST); navodilo.add(naloga, BorderLayout.CENTER); //ustvarimo rgumbe z možnimi odgovori for (i = 0; i < 3; i++) { //vstavimo besedilo rgumb[i] = new JRadioButton(crka[i]+o[zap][i]); rgumb[i].addItemListener(this); grupa.add(rgumb[i]); odgovori.add(rgumb[i]); } slika = tool.getImage(sl[zap]+".jpg"); ikona = new ImageIcon(slika); slikaL = new JLabel(ikona); primeri.add(slikaL); nosilna.add(odgovori); nosilna.add(primeri); resitev.add(new JLabel(pres), BorderLayout.WEST); resitev.add(tekst, BorderLayout.CENTER); namizje1.add(navodilo, BorderLayout.NORTH); namizje1.add(nosilna, BorderLayout.CENTER); namizje1.add(resitev, BorderLayout.SOUTH); preveri = new JButton("Preveri"); preveri.setActionCommand(Preveri_g); preveri.addActionListener(this); naprej = new JButton("Naprej"); naprej.setActionCommand(Naprej_g); naprej.addActionListener(this); gumbi.add(new JLabel("")); gumbi.add(preveri); gumbi.add(new JLabel("")); gumbi.add(naprej); gumbi.add(new JLabel("")); namizje2.add(gumbi, BorderLayout.SOUTH); namizje.add(namizje1, BorderLayout.NORTH); namizje.add(namizje2, BorderLayout.CENTER); return namizje; } //glavna metoda okna public void Okno2(String[] args) { //ustvarimo okno JFrame.setDefaultLookAndFeelDecorated(true); // uporabimo drsno površino v primeru premajhnega okna JScrollPane pane = new JScrollPane(NamizjeOkna2()); pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); frame2.getContentPane().add(pane, BorderLayout.CENTER); frame2.pack(); frame2.setVisible(true); } //sestavimo okno appleta public JPanel NamizjeOkno1(){ bes1.setText(pres+"Pozdravljen/a!"); ogrodje1.add(bes1); bes2.setText(pres+"Ime reševalca nalog:"+pres); textokno1.setText("ime"); ogrodje2.add(bes2); ogrodje2.add(textokno1); bes3.setText(pres+"Priimek reševalca nalog:"+pres); textokno2.setText("priimek"); ogrodje3.add(bes3); ogrodje3.add(textokno2); bes4.setText(pres+"Ime datoteke z nalogami:"+pres); textokno3.setText("ime datoteke"); load = new JButton(); load.setText("Išči ..."); load.setActionCommand(Load_g); load.addActionListener(this); ogrodje4.add(bes4); ogrodje4.add(textokno3); ogrodje4.add(load); ok = new JButton("OK"); ok.setActionCommand(OK_g); ok.addActionListener(this); preklici = new JButton("Preklici"); preklici.setActionCommand(Preklici_g); preklici.addActionListener(this); ogrodje5.add(new JLabel("")); ogrodje5.add(ok); ogrodje5.add(new JLabel("")); ogrodje5.add(preklici); ogrodje5.add(new JLabel("")); ogrodje1.add(ogrodje2); ogrodje1.add(ogrodje3); ogrodje1.add(ogrodje4); ogrodje1.add(ogrodje5); return ogrodje1; } //glavna metoda začetnega okna public void Okno1(String[] args) { //ustvarimo okno JFrame.setDefaultLookAndFeelDecorated(true); // uporabimo drsno površino v primeru premajhnega okna JScrollPane pane = new JScrollPane(NamizjeOkno1()); pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); frame1.getContentPane().add(pane, BorderLayout.CENTER); frame1.pack(); frame1.setVisible(true); } // public void Applet() { app = this.getContentPane(); ime = "---"; priimek = "---"; imedat = "---"; procent = "---"; bes = new JLabel(pres+"Pozdravljen/-a "+ime+" "+priimek+"!"); naslov.add(bes); applet.add(naslov); besedilo4 = new JLabel(pres+"Reševal/-a si kontrolno nalogo shranjeno v datoteki "+imedat+"."); applet.add(besedilo4); besedilo5 = new JLabel(pres+"Dosegel/-la si "+procent+"%"); applet.add(besedilo5); app.add(applet); } //glavna metoda appleta public void init() { Oblika(); Applet(); Okno1(a); } }
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [java]problem z ThrowsOddelek: Programiranje | 1615 (1144) | killa bee |
» | [Java] Ne zažene appletaOddelek: Programiranje | 1217 (1150) | iggy |
» | [Java] Zagon appleta v HTMLOddelek: Programiranje | 1558 (1380) | Bela01 |
» | [JAVA] branje iz datotekeOddelek: Programiranje | 2423 (2058) | Bela01 |
» | [Java]VprašanjaOddelek: Programiranje | 2117 (1585) | Bela01 |