Problem z wyświetleniem apletu

Odpowiedz Nowy wątek
Nowy_java
2008-05-07 11:57
Nowy_java
0

Witam,
To jest przykład apletu z jednej książki. W ApletViewer wszytko jest OK, jednak na stronie się nie wyświetla. Consola wyrzuca jakieś błędy.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ApletKalkulatora extends JApplet{

    public void init(){

        Container powZawartosci = getContentPane();
        PanelKalkulatora panel = new PanelKalkulatora();
        powZawartosci.add(panel);

    }
}
class PanelKalkulatora extends JPanel
{
    public PanelKalkulatora()
    {
        setLayout(new BorderLayout());

        wynik = 0;
        ostPolecenie = "=";
        poczatek = true;

        poleWyniku = new JTextField("0");
        poleWyniku.setEditable(false);
        add(poleWyniku, BorderLayout.NORTH);

        ActionListener wstaw = new Dolaczanie();
        ActionListener polecenie = new Polecenie();

        panel = new JPanel();

        panel.setLayout(new GridLayout(4,4));

        dodajPrzycisk("7", wstaw);
        dodajPrzycisk("8", wstaw);
        dodajPrzycisk("9", wstaw);
        dodajPrzycisk("/", wstaw);

        dodajPrzycisk("4", wstaw);
        dodajPrzycisk("5", wstaw);
        dodajPrzycisk("6", wstaw);
        dodajPrzycisk("*", polecenie);

        dodajPrzycisk("1", wstaw);
        dodajPrzycisk("2", wstaw);
        dodajPrzycisk("3", wstaw);
        dodajPrzycisk("-", polecenie);

        dodajPrzycisk("0", wstaw);
        dodajPrzycisk(".", wstaw);
        dodajPrzycisk("=", polecenie);
        dodajPrzycisk("+", polecenie);

        add(panel, BorderLayout.CENTER);

    }

    private void dodajPrzycisk(String etykieta, ActionListener sluchacz)
    {
        JButton przycisk = new JButton(etykieta);
        przycisk.addActionListener(sluchacz);
        panel.add(przycisk);
    }

    private class Dolaczanie implements ActionListener
    {
        public void actionPerformed(ActionEvent zdarzenie)
        {
            String wejscie = zdarzenie.getActionCommand();
            if (poczatek)
            {
                poleWyniku.setText("");
                poczatek = false;

            }
            poleWyniku.setText(poleWyniku.getText()+ wejscie);
        }
    }

    private class Polecenie implements ActionListener
    {

        public void actionPerformed(ActionEvent zd)
        {
            String polecenie = zd.getActionCommand();
            if (poczatek)
            {
                if(polecenie.equals("."))
                {
                    poleWyniku.setText(polecenie);
                    poczatek = false;

                }
                else
                    ostPolecenie = polecenie;
            }
            else
            {
                oblicz(Double.parseDouble(poleWyniku.getText()));
                ostPolecenie = polecenie;
                poczatek = true;
            }
        }
    }

    public void oblicz(double x)
    {
        if (ostPolecenie.equals("+")) wynik +=x;
        else if (ostPolecenie.equals("-")) wynik -=x;
        else if (ostPolecenie.equals("*")) wynik *=x;
        else if (ostPolecenie.equals("/")) wynik /=x;
        else if (ostPolecenie.equals("=")) wynik =x;
        poleWyniku.setText("" + wynik);
    }

    private JTextField poleWyniku;
    private JPanel panel;
    private double wynik;
    private String ostPolecenie;
    private boolean poczatek;
}

Prośba o pomoc

Pozdrawiam

Pozostało 580 znaków

2008-05-07 14:54
Moderator

Rejestracja: 13 lat temu

Ostatnio: 1 minuta temu

Lokalizacja: Stacktrace

0

Błędy są tu ważniejsze niż kod. Jakie błędy?


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Pozostało 580 znaków

Nowy_java
2008-05-07 15:08
Nowy_java
0

Błędy:

java.lang.NoClassDefFoundError: ApletKalkulatora$PanelKalkulatora
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: ApletKalkulatora$PanelKalkulatora
    at sun.applet.AppletClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.applet.AppletClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 10 more
java.lang.NoClassDefFoundError: ApletKalkulatora$PanelKalkulatora
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: ApletKalkulatora$PanelKalkulatora
    at sun.applet.AppletClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.applet.AppletClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 10 more

Pozostało 580 znaków

2008-05-07 15:28
Moderator

Rejestracja: 13 lat temu

Ostatnio: 1 minuta temu

Lokalizacja: Stacktrace

0

Nie można znaleźć pliku z klasą PanelKalkulatora. Zgubiłeś zapewne konfigurację codebase lub czegoś takiego.

Najlepiej zapakuj wszystko do pliku jar i dopiero w takiej postaci umieszczaj na stronie. To najbezpieczniejsze wyjście.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Pozostało 580 znaków

Nowy_java
2008-05-07 16:05
Nowy_java
0

Spakowanie do JAR nie pomaga. Nie wiem o co chodzi.

Pozostało 580 znaków

bogdans
2008-05-07 22:52
bogdans
0

to jeszcze pokaż jak wygląda znacznik <applet>

Pozostało 580 znaków

Nowy_java
2008-05-08 10:24
Nowy_java
0

Znacznik Applet wygląda tak:

<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<object
    classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
    codebase = "http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab#Version=6,0,0,105"
    WIDTH = "200" HEIGHT = "200" >
    <PARAM NAME = CODE VALUE = "ApletKalkulatora.class" >
    <param name = "type" value = "application/x-java-applet;version=1.6">
    <param name = "scriptable" value = "false">

    <comment>
    <embed
            type = "application/x-java-applet;version=1.6" \
            CODE = "ApletKalkulatora.class" \
            WIDTH = "200" \
            HEIGHT = "200"
        scriptable = false
        pluginspage = "http://java.sun.com/products/plugin/index.html#download">
        <noembed>

            </noembed>
    </embed>
    </comment>
</object>

<!--
<APPLET CODE = "ApletKalkulatora.class" WIDTH = "200" HEIGHT = "200">

</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->

Pozostało 580 znaków

Nowy_java
2008-05-08 10:27
Nowy_java
0

Zamieściłem wyżej cały kod Apletu. Może ktoś spróbuje skompilować i uruchomić u siebie???

Pozostało 580 znaków

bogdans
2008-05-08 11:30
bogdans
0

1.skompilowałem
2.zrobiłem z wszystkich plików *.class jednego zip-a Test.zip

  1. umieściłem na stronie takie coś
    <applet code="ApletKalkulatora.class" archive="Test.zip" height="300" width="400"></applet>

    i działa

Pozostało 580 znaków

Nowy_java
2008-05-08 12:12
Nowy_java
0

Działa. Dzięki.
Jak widać początki bywają trudne.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0