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 | 1732 (1261) | killa bee |
| » | [Java] Ne zažene appletaOddelek: Programiranje | 1339 (1272) | iggy |
| » | [Java] Zagon appleta v HTMLOddelek: Programiranje | 1702 (1524) | Bela01 |
| » | [JAVA] branje iz datotekeOddelek: Programiranje | 2540 (2175) | Bela01 |
| » | [Java]VprašanjaOddelek: Programiranje | 2222 (1690) | Bela01 |