Problem z wyświetleniem apletu

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

0

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

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
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.

0

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

0

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

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"-->
0

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

0

1.skompilowałem
2.zrobiłem z wszystkich plików *.class jednego zip-a Test.zip
3. umieściłem na stronie takie coś

<applet code="ApletKalkulatora.class" archive="Test.zip" height="300" width="400"></applet>

i działa

0

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

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