» »

[Java] Zagon appleta v HTML

[Java] Zagon appleta v HTML

Bela01 ::

Zanima me v čem je fora, da mi na strani ne zažene appleta. Gre se za programček o katerem je bilo že več tem odprtih (Branje iz datoteke).
Na računalniku imam naloženo java jdk1.6, uporabljam pa bluej. Skompajlala sem v bluej, ki mi je lepo naredila datoteko s .class, vendar ne deluje. V čem je problem?

<b>klima</b> ::

<html>
<body>
<applet code="Imerazreda.class" width=460 height=320></applet>
</body>
</html>

Probej zagnat, če noče je verjetno nekaj narobe s samim classom.

Bela01 ::

Njet. Kaj bi lakho bilo narobe? A se more kje v BlueJ kaj posebej nastavljat, da pravilno prevede?
Če grem v konzoli prevajat z javac, pa mi izpiše, da ne obstaja ta ukaz ali nekaj takega.
Verjetno bo s tem nekaj narobe.
Sem sicer iskala na forumu o tem, vendar pod spremenljivko path (pod System), je že nekaj nastavljeno od enega programa, pa ne vem če lahko spremenim tisto.

Bojevnik ::

v path lahko dodajaš dodatne poti, ločij jih pa s podpičjem.
npr.:
C:\soundblaster\;C:\Java\bin\

s tem da za podpićjem ne sme biti presledka

Bela01 ::

Sem vstavla, vendar še vedno ne dela applet. Kaj bi lahko bilo še narobe?

Naj še dodam kodo, če bi bilo potrebno tu kaj spremnit.



import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;

public class Naloga extends JApplet implements ItemListener, ActionListener {

    String[] a;
    String pres = "    ";
    //vprašanje
    String[] n = new String[3];
    //odgovori
    String[][] o = new String[3][3];
    //točke za pravilne odgovore
    int[] tocke = new int[3];
    //pravilni odgovor
    int[] odg = new int[3];
    
    
    
    JFrame frame = new JFrame("Reševanje nalog");
    
    
    //zaporedna številka naloge
    int zap = 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";
    
      
    //ustvarimo gumbe
    JRadioButton[] rgumb = new JRadioButton[3];;  
    JButton preveri, naprej;
    
    //spremenljivka za slikice
    Toolkit tool = Toolkit.getDefaultToolkit();
    Image slika = tool.getImage("naloga1.jpg");
    Icon ikona = new ImageIcon(slika);
    JLabel slikaL = new JLabel(ikona);
    
    //grupa, ki bo združila radiobutone - rgumbe, da bodo sodelovali med seboj
    ButtonGroup grupa = new ButtonGroup();
       
    //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, 2));
          
    JLabel izpis = new JLabel("");
    
    //panele za applet
    JPanel applet = new JPanel(new GridLayout(8,1));
    JPanel naslov = new JPanel(new BorderLayout());
    JPanel n_1 = new JPanel(new GridLayout(2,1));
    JPanel n_2 = new JPanel(new GridLayout(2,1));
    JPanel n_3 = new JPanel(new GridLayout(2,1));
    JPanel nal1 = new JPanel(new GridLayout(2,2));
    JPanel nal2 = new JPanel(new GridLayout(2,2));
    JPanel nal3 = new JPanel(new GridLayout(2,2));
    JPanel komentar = new JPanel();
    
    //labele za applet
    JLabel[] L1 = new JLabel[2];
    JLabel[] L2 = new JLabel[2];
    JLabel[] L3 = new JLabel[2];
    JLabel kom = new JLabel();
    

    public void Labele() {
        for (int i = 0; i < 2; i++)
        {
            L1[i] = new JLabel(" ");
            L2[i] = new JLabel(" ");
            L3[i] = new JLabel(" ");
        }
    }
    
    public void Oblikuj() {

        applet.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createEtchedBorder()));
        
        naslov.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createEtchedBorder()));
                
        n_1.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createEtchedBorder()));
                
        n_2.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createEtchedBorder()));

        n_3.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createEtchedBorder()));
        komentar.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createEtchedBorder()));
                
        applet.setPreferredSize(new Dimension(500,500));
        naslov.setPreferredSize(new Dimension(40,500));
        n_1.setPreferredSize(new Dimension(60,500));
        nal1.setPreferredSize(new Dimension(40,500));
        n_2.setPreferredSize(new Dimension(60,500));
        nal2.setPreferredSize(new Dimension(40,500));
        n_3.setPreferredSize(new Dimension(60,500));
        nal3.setPreferredSize(new Dimension(40,500));
        komentar.setPreferredSize(new Dimension(30,500));
    }
    
    public void ZgradiApplet()
    {
        Container app = this.getContentPane();
        
        
        Oblikuj();
        
        Labele();
        
        naslov.add(new JLabel("         Rezultati reševanja"));
                
        nal1.add(new JLabel("         Pravilen odgovor: "));
        nal1.add(L1[0]);
        nal1.add(new JLabel("         Dosežene točke: "));
        nal1.add(L1[1]);
        
        nal2.add(new JLabel("         Pravilen odgovor: "));
        nal2.add(L2[0]);
        nal2.add(new JLabel("         Dosežene točke: "));
        nal2.add(L2[1]);
        
        nal3.add(new JLabel("         Pravilen odgovor: "));
        nal3.add(L3[0]);
        nal3.add(new JLabel("         Dosežene točke: "));
        nal3.add(L3[1]);
        
        n_1.add(new JLabel(n[0]));
        n_1.add(nal1);
        n_2.add(new JLabel(n[1]));
        n_2.add(nal2);
        n_3.add(new JLabel(n[2]));
        n_3.add(nal3);

        komentar.add(kom);
        
        applet.add(n_1);
        applet.add(n_2);
        applet.add(n_3);
        
        applet.add(komentar);
        
        app.add(applet);
        
    }
       

    //Panela z navodilom naloge
    public JPanel NavodiloP(){
        
        navodilo.setPreferredSize(new Dimension(350, 50));
        
        naloga.setText(n[0]);
        
        navodilo.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 0, 5, 0),
                BorderFactory.createEtchedBorder()));
                
        navodilo.add(new JLabel(pres), BorderLayout.WEST);
        navodilo.add(naloga, BorderLayout.CENTER);
        
        return navodilo;
    }
    
    //v grupo dodamo stikala oz. radiobuttone
    void DodajStikala(){
       
        //ustvarimo rgumbe z možnimi odgovori
        for (int i = 0; i < 3; i++)
        {
            rgumb[i] = new JRadioButton(o[zap][i]);
            if (i != odg[zap])
                rgumb[i].setActionCommand("NE");
            else
                rgumb[i].setActionCommand("DA");
            rgumb[i].addItemListener(this);
            grupa.add(rgumb[i]);
        }
    }

    //Panela ki vsebuje stikala
    public JPanel OdgovoriP(){
        DodajStikala();
        odgovori.setPreferredSize(new Dimension(200, 250));
        
        odgovori.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createTitledBorder(
                    LineBorder.createGrayLineBorder(),
                    "Možni odgovori")));
          
        for (int i = 0; i < 3; i++)
        {
            odgovori.add(rgumb[i]);
        }
        
        return odgovori;
    }
    
    //Panela ki vsebuje slike
    public JPanel PrimeriP(){
        
        primeri.setPreferredSize(new Dimension(200, 250));
        
        primeri.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 5, 5, 5),
                BorderFactory.createTitledBorder(
                    LineBorder.createGrayLineBorder(),
                    "Slika kot pomoč")));
                    
        
        primeri.add(slikaL);
     
        return primeri;
    }
   
    //Panela ki vsebuje paneli odgovori in primeri
    public JPanel NosilnaP(){
        
        OdgovoriP();
        PrimeriP();
        
        nosilna.add(odgovori);
        nosilna.add(primeri);
        
        nosilna.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(5, 0, 5, 0),
                BorderFactory.createEtchedBorder()));

        return nosilna;
    }
    
    //panela ki vsebuje labelo s tekstom
    public JPanel ResitevP(){
        
        resitev.add(izpis);
        resitev.setPreferredSize(new Dimension(350, 50));
        
        resitev.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(1, 0, 1, 0),
                BorderFactory.createEtchedBorder()));
        
        resitev.add(new JLabel(pres), BorderLayout.WEST);
        resitev.add(tekst, BorderLayout.CENTER);
                
        return resitev;
    }
    
    //panela namizje1 vsebuje panele navodilo, nosilna in resitev
    public JPanel Namizje1P(){
        
        NavodiloP();
        NosilnaP();
        ResitevP();
        
        namizje1.add(navodilo, BorderLayout.NORTH);
        namizje1.add(nosilna, BorderLayout.CENTER);
        namizje1.add(resitev, BorderLayout.SOUTH);
        
        namizje1.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5));
        
        return namizje1;
    }
    
    //panela ki vsebuje gumba preveri in naprej
    public JPanel GumbiP(){
        
        gumbi.setPreferredSize(new Dimension(350, 50));
        
        gumbi.setBorder(
            new CompoundBorder(
                BorderFactory.createEmptyBorder(1, 0, 1, 0),
                BorderFactory.createEtchedBorder()));
        
        //ustvarimo in vstavimo v labelo gumba preveri in naprej
        preveri = new JButton("Preveri");
        preveri.setActionCommand(Preveri_g);
        preveri.addActionListener(this);
        gumbi.add(preveri);
        naprej = new JButton("Naprej");
        naprej.setActionCommand(Naprej_g);
        naprej.addActionListener(this);
        gumbi.add(naprej);
        
        return gumbi;
    }
    
    //panela ki vsebuje gumbe
    public JPanel Namizje2P(){
        
        GumbiP();
        
        namizje2.add(gumbi, BorderLayout.SOUTH);
        
        namizje2.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
        
        return namizje2;
    }
    
    //glavno namizje ki vsebuje namizje1 in namizje2
    public JPanel NamizjeP(){
     
        Namizje1P();
        Namizje2P();
        
        namizje.add(namizje1, BorderLayout.NORTH);
        namizje.add(namizje2, BorderLayout.CENTER);
        
        return namizje;
    }
    
    public void BeriIzDatoteke()
    {

        try
        {
           BufferedReader datoteka = new BufferedReader(new FileReader("datoteka.txt"));

           //trije seti vprašanj
           for (int j = 0; j < 3; j++)
           {
               //prebereš vprašanje in ga shraniš
               n[j] = datoteka.readLine();

               //prebereš možne odgovore in jih shraniš
               for (int k = 0; k < 3; k++)
               {
                    //shraniš možne odgovore
                    o[j][k] = datoteka.readLine();
                }
                //prebereš še številko pravilnega odgovora
                odg[j] = Integer.parseInt(datoteka.readLine());
            }

            datoteka.close();
        }
        catch(IOException e) //če datoteka, ki smo jo klicali za branje ne obstaja
        {
            //System.out.println("Datoteka ne obstaja!");
        }
        
        zap = 0;
        
    }
    
    //glavni program okna
    public void main(String[] args) {

        BeriIzDatoteke();
        
        //oblikujemo applet
        ZgradiApplet();
        
        
        
        //ustvarimo okno
        JFrame.setDefaultLookAndFeelDecorated(true);
        
        //Naloga app = new Naloga();
        
                        
        // uporabimo drsno površino v primeru premajhnega okna
        JScrollPane pane = new JScrollPane(NamizjeP());
        pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
        
        frame.getContentPane().add(pane, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
        
        
        
    }
        
    //glavni program appleta
    public void init() {
        
        main(a);
    }
        
    //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(Preveri_g))
        {
            //ko uporanbik pritisne gumb preveri, se možnost izbire odgovora prepreči
            rgumb[0].setEnabled(false);
            rgumb[1].setEnabled(false);
            rgumb[2].setEnabled(false);
            
            if (rgumb[odg[zap]].isSelected())
            {
                tekst.setText("Odgovor je pravilen!");
                tocke[zap] = 1;
            }
            else 
                tekst.setText("Odgovor ni pravilen!");
        }
                
                
        if (event.getActionCommand().equals(Naprej_g)) {
            //omogočimo gumbe za odgovore
            rgumb[0].setEnabled(true);
            rgumb[1].setEnabled(true);
            rgumb[2].setEnabled(true);
            
            rgumb[0].setSelected(false);
            rgumb[1].setSelected(false);
            rgumb[2].setSelected(false);
            
            tekst.setText("");
            if (zap < 2)
            {
                zap++;
                naloga.setText(n[zap]);
                
                for (i = 0; i < rgumb.length; i++)
                {
                    rgumb[i].setText(o[zap][i]);
                }
                
                if (zap == 1)
                {
                    primeri.remove(slikaL);
                    slika = tool.getImage("naloga2.jpg");
                    ikona = new ImageIcon(slika);
                    slikaL = new JLabel(ikona);
                    primeri.add(slikaL);
                }
                else if (zap == 2)
                {
                    primeri.remove(slikaL);
                    slika = tool.getImage("naloga3.jpg");
                    ikona = new ImageIcon(slika);
                    slikaL = new JLabel(ikona);
                    primeri.add(slikaL);
                }
                
            }
            else
            {
                zap = 0;
                              
                L1[0].setText(o[0][0]);
                L1[1].setText(String.valueOf(tocke[0]));
                
                L2[0].setText(o[1][1]);
                L2[1].setText(String.valueOf(tocke[1]));
                
                L3[0].setText(o[2][2]);
                L3[1].setText(String.valueOf(tocke[2]));
                    

                int a = 0;
                for (i = 0; i < 3; i++)
                {
                    a = a + tocke[i];
                }
                
                if (a == 3)
                    kom.setText("     Sedi! Pet!");
                else if (a == 2)
                    kom.setText("     Ni slabo!");
                else if (a == 1)
                    kom.setText("     Malo si bo treba še pogledat snov!");
                else if (a == 0)
                    kom.setText("     C-c-c, zelo slabo!");
                    
                frame.dispose();
                
            }
        }
    }
}

Zgodovina sprememb…

  • spremenila: Bela01 ()

w00tnes ::

Meni tvojo kodo lepo skompajla in aplet tudi zazene...probaj najprej nastaviti poti:
SET path=%path%;C:\pot\do\jdk.x\bin [npr. C:\Program Files\Java\jdk1.5.0_15\bin]
SET classpath=.
pa potem kompajlaj

(upam da je kaj pomagalo)

Lp

Bela01 ::

Sem nastavla, pa mi še vedno ne v Mozilli in ne v IE ne prikaže na strani appleta. Pač samo tisti okvirček in rdeči križec. Ampak druge applete mi pa odpira, torej ni problem v brskalnikih :(

Torej ni problem, d mi ne bi prevedlo, samo očitno ne prevede prav, ker pol to ne dela.

Zgodovina sprememb…

  • spremenila: Bela01 ()

Infinity ::

A maš u sami javi astavljen da lahko applet šari po tvojem disku? ker kolkr js vem applet sam po seb nima pravicc za šarjenje po disku.

Bela01 ::

Hm, ne vem. Kje pa to nastavim?

Infinity ::

JavaCPL - Java control panel

w00tnes ::

Slika appleta
(.class in html imam v isti mapi)

Bela01 ::

w00tnes: Uh ko je namučkano skupaj besedilo. Pa sem še viška prostora pustila, pa mi ni jasno zakaj tak natlači, ker prvo ni.

Saj imam .class in html v isti mapi, pa ne dela. A lahko še probate s tem mojim classom, če bo delalo. Mogoče pa je kje kaj druga narobe nastavljeno.

Klik

Zgodovina sprememb…

  • spremenila: Bela01 ()

Bela01 ::

Zdaj sem še zagnala iz ukazne vrstice, tu pa dela (appletviewer index.html).

Me pa moti izgled. Zakj je tak namučkano skupaj, če pa dimenzije ogrodja gredo skozi, še viška je.

w00tnes ::

Hm tudi meni zdaj nekej zabrejkalo...sem pa resil na naslednji nacin:
- ustvaris jar fajl (jar cvf Naloga.jar Naloga.class)
- popravis html fajl (spremenis code="Naloga.class" tako, da dodas se archive="Naloga.jar")
- zgeneriras kljuc (C:\Naloga>keytool -genkey -alias Naloga -validity 365)
- pozenes jarsigner (C:\Naloga>jarsigner Naloga.jar Naloga)
Reload, med nalaganjem te bo vprasalo ce dovolis izvajanje in das run...meni tako zacne delati :)

Edit: v appletviewerju je tudi meni normalno delalo...cudno da mi je ze prej pognalo zadevo v firefoxu (krneki!)

Zgodovina sprememb…

  • spremenil: w00tnes ()

Bela01 ::

Uh, hvala za pomoč. Bom probala skupaj spacat.

A imaš kako idejo kak še naj izgled appleta popravim? Da ne bo tak nagužvano skupaj?

w00tnes ::

To pa nebi vedel (GUI pa jaz...to ne gre skup :P )
Mogoce bi lahko uporabila gridlayout (z enim stolpcem)...dunno :)

Bela01 ::

Hm isto (glede izgleda). Sicer sem zdaj vidla da sem x in y zamenjala (trola pa jaz, saj se nikjer ne piše prvo y in potem x). Dobro to bom sicer že rešla nekak.


P.S.: Sem odpravla zadevo. Ne znam štet. Ne vem od kod sem dobila 8 vrstic, če pa jih je samo 5.

Zgodovina sprememb…

  • spremenila: Bela01 ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[java]problem z Throws

Oddelek: Programiranje
221503 (1032) killa bee
»

[Java] Ne zažene appleta

Oddelek: Programiranje
51137 (1070) iggy
»

[JAVA] branje iz datoteke

Oddelek: Programiranje
242285 (1920) Bela01
»

[Java]Vprašanja

Oddelek: Programiranje
242030 (1498) Bela01
»

[Java] Deljenje in ostanek

Oddelek: Programiranje
142916 (2500) pr2501

Več podobnih tem