Applet läuft nicht, Applet in Webseite einbinden

Xtr3m3 Lucky

Mitglied
Schönen guten Tag,

Ich weis dieses Thema hört sich wie ein typischer Anfängerfehler an, aber so leicht ist es diesmal leider nicht. Ich will ein Applet zum Bestellen von einem Produkt auf einer Webseite hochladen. Allerdings erhalte ich Diverse Fehlermeldungen bzw. kam es beim debuggen vor, das das Applet einfach nur ein weißes Feld darstellte und nichts weiter passierte. Ich stelle den Code nun hier zur Verfügung. Ich möchte anmerken das ich normalerweise nicht so schnell aufgebe und an einem Projekt dranbleibe, aber ich bin nun seit ca. 2 Wochen daran ohne das es vorangeht und mein Auftraggeber wird langsam ungeduldig. Ausserdem möchte ich schon im vorraus anmerken das ich sehr wohl weis das Klassennamen groß geschrieben werden :)

Dies ist mein HauptProgramm:

Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;

public class hauptprogramm extends JApplet implements Runnable{


	private static final long serialVersionUID = 1L;
	private Thread tireStyle;
	private JTextField schrift;
	private Checkbox fett,kursiv;
	private JComboBox größe,font,anzahl;
	private DefaultComboBoxModel boxmodel;
	private JButton color,buy;
	private ButtonGroup buttongroup;
	private JLabel label,vorschau;
	private JPanel panel;
	private JFrame bestellen;
	private Font mainfont;
	private int weite,höhe;
	
	File[] files;
	Graphics hintergrund;
	Image background,buffer;
	
	static Color farbe=new Color(255, 255, 255);
	Color test=new Color(255,255,255);
	
	public hauptprogramm(){
		try {
		    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
		        if ("Nimbus".equals(info.getName())) {
		            UIManager.setLookAndFeel(info.getClassName());
		            break;
		        }
		    }
		} catch (Exception e) {
		    // If Nimbus is not available, you can set the GUI to another look and feel.
		}
	}
	public void start()
	  {
	    this.tireStyle = new Thread(this);
	    this.tireStyle.start();
	    showStatus("started");
	  }

	  public void init()
	  {
	    if (this.tireStyle == null) {
	      start();
	    }
	    else
	    {
	      stop();
	    }
	    this.createGui(); 
	    this.createPane();
	  }

	public void createGui(){
		 try
		    {
			
			  URL url = new URL(getDocumentBase(), "tirestyle.jpg");
		      this.background = getToolkit().getImage(url);
		     
		      MediaTracker track = new MediaTracker(this);
		      track.addImage(this.background, 0);
		      track.waitForID(0);
		      this.weite = this.background.getWidth(null);
		      this.höhe = this.background.getHeight(null);
		      
		      setSize(this.weite, this.höhe);

		    }
		    catch (InterruptedException e)
		    {
		      System.out.println("Laden des hintergrundes unterbrochen");
		    }
		 	catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		
	}
	
	public void createPane(){
		
		String [] größen={"small","medium","big"};
		String [] numbers={"1","2","3","4"};
		boxmodel=new DefaultComboBoxModel();
		
		
		File file = new File(".\\fonts");  
		files = file.listFiles();  

		 for (int fileInList = 0; fileInList < files.length; fileInList++)  
		 {  
			String tt=files[fileInList].toString();
			int zahl=tt.lastIndexOf("\\");
			String wort=tt.substring(zahl);

			boxmodel.addElement(files[fileInList].toString().substring(zahl+1)); 
		
}  


		this.add(panel=new JPanel());
		panel.setLayout(null);
		panel.setSize(this.weite,this.höhe);
		
		panel.add(schrift=new JTextField("Beispiel"));
		panel.add(font=new JComboBox(boxmodel));
		panel.add(color=new JButton("Farbe"));
		panel.add(größe=new JComboBox(größen));
		panel.add(buy=new JButton("Bestellen"));
		panel.add(fett=new Checkbox("Fett"));
		panel.add(kursiv=new Checkbox("Kursiv"));
		panel.add(vorschau=new JLabel());
		panel.add(anzahl=new JComboBox(numbers));
		
		schrift.setBounds(69,201,265,30);
		font.setBounds(25,75,120,20);
		color.setBounds(155,75,100,20);
		größe.setBounds(265,75,100,20);
		buy.setBounds(265,100,100,30);
		fett.setBounds(30,105,50,20);
		kursiv.setBounds(90,105,55,20);
		vorschau.setBounds(35,260,330,100);
		anzahl.setBounds(155,105,100,20);
		anzahl.setSelectedIndex(3);
		
		color.addActionListener(new Farbe());
		buy.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent arg0) {
			
				String size=(String) größe.getSelectedItem();
				String font=(String) boxmodel.getSelectedItem();
				boolean isfett= fett.getState();
				boolean iskursiv=kursiv.getState();
				int numbers=anzahl.getSelectedIndex();

				bestellen b= new bestellen(font,farbe,size,isfett,iskursiv,numbers);
				
				
			}
		});
		

		panel.add(label=new JLabel(new ImageIcon(".\\tirestyle.jpg")));
		label.setSize(this.höhe,this.weite);
		
	}
	public void aktualisiere(){
		
		int auswahl=font.getSelectedIndex();
		
		if(farbe.equals(test)){
			vorschau.setOpaque(true);
			vorschau.setBackground(Color.black);
		}
		else{
			vorschau.setOpaque(false);
			vorschau.setBackground(Color.white);
		}
		try {

			mainfont = Font.createFont(Font.TRUETYPE_FONT, files[auswahl]);

			if(fett.getState()==true&&kursiv.getState()==true){
				
				Font anzeige=mainfont.deriveFont(Font.ITALIC + Font.BOLD,30);
				vorschau.setFont(anzeige);
			
			}
			else if(fett.getState()==true){
				Font anzeige = mainfont.deriveFont(Font.BOLD, 30);
				vorschau.setFont(anzeige);
			}
			else if(kursiv.getState()==true){
				Font anzeige= mainfont.deriveFont(Font.ITALIC,30);
				vorschau.setFont(anzeige);
			}
			else{
				Font anzeige = mainfont.deriveFont(Font.PLAIN, 30);
				vorschau.setFont(anzeige);
			}
			
			
			
		} catch (FontFormatException e) {

		} catch (IOException e) {

		}

		vorschau.setForeground(farbe);
		vorschau.setText(schrift.getText());
	}
	
	public void run() {


		while(true){
			
			try{
				Thread.sleep(200);

				this.aktualisiere();
				this.repaint();
				
			}
			catch(Exception e){
				
			}
		}
	
		
	}
	 public void paint(Graphics g)
	  {
		 panel.updateUI();
		
	  }

}

Ich hoffe das soweit alles verständlich ist. In einem Ordner Fonts liegen hunderte .ttf Schriftarten, die in das Model der Combobox geladen werden und dann jeweils auf das Label angewendet werden, eine Auswahlmöglichkeit für die Farbe bietet folgende Klasse:

Java:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JColorChooser;


public class Farbe implements ActionListener{

	
	public void actionPerformed(ActionEvent arg0) {
		
		Color c = JColorChooser.showDialog(null, 
	            "Farbauswahl", null);
		
		hauptprogramm.farbe=c;
	}

}

Hier ist noch die Klasse zum bestätigen der bestellung, befor dann in einer finalen und noch nicht fertiggestellten Klasse eine E-Mail an unseren Bestellservice gesendet wird:

Java:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;


public class bestellen extends JFrame{

	private static final long serialVersionUID = -1557892580855415976L;
	JLabel color;
	JTextArea ausgabe;
	JButton okay,abbrechen;
	
	public bestellen(String schrift,Color farbe, String größe, boolean fett, boolean kursiv, int anzahl){
		
		anzahl++;
		int Preis=7;
		this.setSize(400,400);
		this.setLocationRelativeTo(null);
		this.setTitle("Bestellung abschicken");
		this.setLayout(null);
		
		this.add(ausgabe=new JTextArea());
		this.add(okay=new JButton("Bestellen"));
		this.add(abbrechen=new JButton("Abbrechen"));
		
		ausgabe.setBounds(20,20,350,250);
		ausgabe.setEditable(false);
		okay.setBounds(20,300,100,20);
		abbrechen.setBounds(270,300,100,20);
		
		ausgabe.setText("Ihre Bestellung lautet wie folgt:\n\n" +
				"Schriftzug:" + schrift +"\n"+
				"Größe: " + größe + "\n" +
				"Anzahl: " + anzahl + "\n\n" +
				"Der Preis beträgt " + anzahl*Preis + " Euro.\n" +
				"Bitte Überweisen Sie das Geld an:\n"+
				"Kontodaten 1\n"+
				"Kontodaten 2 \n"+
				"Bankdaten\n\n" +
				"Als Überweisungsgrund geben Sie bitte ihre Adresse an.\n"+
				"Mit einem Klick auf Bestellen senden Sie den Auftrag ab,\n"+
				"nach erhalt des Geldes senden wir Ihnen Ihr Produkt");
		
		this.setVisible(true);
		
	}
}

Mir ist klar das das keine leichte Kost ist und wahrscheinlich erstmal von euch selbst kompiliert werden muss, befor ich Antworten erhalte. Zum Ausführen muss noch das Bild im Anhang in den Projektordner.


Beim debugging habe ich schon die Pfade zum Hintergrundbild geändert, da ich eine Acess Violation bekam, als ich den Pfad mit System.getProperty("user.dir"); abfragen wollte.

Das Aplett habe ich mit einer Batch File aus diesem Forum signiert, das hat auch nichts geholfen.
Ich habe alle möglichen Arten, ein Applet in eine Webseite einzubinden, ausprobiert, manche kamen weiter als andere, bei manchen bekam ich nur ein weißes Bild. Das Applet steht wirklich nur auf HTML Content, ohne ContentManagment System oder Websprachen.

Das Hintergrundbild ist sowohl AUF dem Applet, als auch auf dem Panel, eine Folge meiner anfänglichen double-Bufferung, die ich so übernommen habe.

Ich bin mit den Nerven am Ende, mein Auftraggeber sitzt mir im Nacken und ich habe noch mehr zu tun als 24/7 an einem Applet zu schreiben....
Ich bin auch gerne bereit, hier im Forum den anderen Usern mit Rat und Tat zur Seite zu stehen, allerdings MUSS ich diesen Auftrag fertig bekommen oder ich werde die nächsten Monate hungern....
(okay, das war übertrieben :D)

L-ectron-X, kannst du mir aus meiner misslichen Lage helfen=? Natürlich bin ich auch dankbar für Antworten aller anderen User :)
 
Zuletzt bearbeitet von einem Moderator:

L-ectron-X

Gesperrter Benutzer
Ziemlich übler Chaoscode, aber man kann was daraus machen. Reichlich Stolpersteine hast du dir da eingebaut.
Nachdem ich den Code etwas umgestellt habe, kann ich zumindest schon mal im AppletViewer die Komponentenanordnung sehen.
Wozu brauchst du den extra Thread, der alle 200 ms neu zeichnet?
Wo liegen die Font-Dateien? Auf dem Server? Im Moment versuchst du nämlich die Fonts auf dem Client zu suchen...


Links ein Bild, nach dem ich dein Applet etwas umgebaut/bereinigt/verbessert habe. (Models noch nicht eingebunden)
Rechts ein Bild, nach dem ich den Pfad zu den Fonts (hier Systemfonts) in deinen Code eingesetzt habe.
Noch keine Spur von einem Hintergrundbild.
 

Anhänge

  • Buildup.jpg
    Buildup.jpg
    24,4 KB · Aufrufe: 38
  • tirestyle.jpg
    tirestyle.jpg
    24 KB · Aufrufe: 33
Zuletzt bearbeitet:

Xtr3m3 Lucky

Mitglied
hallo, erstmal vielen dank

Das Neuzeichnen ist im Prinzip überflüssig, da hast du recht. Es war noch aus der vorherigen Version drin.
die Fonts liegen alle in einem Ordner namens Fonts im gleichen Verzeichnis auf dem Server. Zuerst hatte ich tatsächlich versucht, mit System.getProperty die Fonts zu suchen, bis ich realisiert habe, das ich damit den User-Pc durchsuche. Als momentanen Stand bekomme ich eine ClassNotFound Exception, ich glaube es mangelt an der Richtigen einbindung des Applets auf der Webseite. Vielleicht könntest du ja mal versuchen, das Applet in eine blanke Html Seite einzubinden. Ich bin für jeden Tipp dankbar.

MFG,
Xtr3m3 Lucky
 

L-ectron-X

Gesperrter Benutzer
Ich brauche noch gar nicht versuchen, das Applet einzubinden, wenn deine Version nur im AppletViewer läuft.
Bring den Code in Ordnung, poste nicht irgendwelche alten, nicht mehr relevanten Codeversionen von "letzter Woche", dann können wir das Applet einbinden.

Backslashes funktionieren nur unter Windows. Stelle deinen Code mal auf Slash um.
 
G

Gast2

Gast
Wär das nicht ein Thema für die Jobbörse? Du bekommst das Teil doch anscheinend bezahlt?!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Mein Applet läuft in der IDE aber nicht. Allgemeine Java-Themen 2
W Java Applet läuft langsam Allgemeine Java-Themen 2
F Eclipse JAVAMAIL läuft nur unter Eclipste Applet Viewer Allgemeine Java-Themen 4
J Java Applet Verknüpfungsproblem Allgemeine Java-Themen 6
L Applet Applet zu JavaWebStart migrieren - simples sample geht nicht Allgemeine Java-Themen 2
A Applet Applet debuggen und Logs finden Allgemeine Java-Themen 3
A Plot funktion applet Allgemeine Java-Themen 4
A Applet nullstelle Plot Allgemeine Java-Themen 1
A Applet in HTML einbinden Allgemeine Java-Themen 1
B Altes Applet anpassen Allgemeine Java-Themen 8
W Unterschied Standalone und Applet Allgemeine Java-Themen 1
L WebSign Applet der Deutschen Bank Allgemeine Java-Themen 0
K Applet in JApplet umwandeln Allgemeine Java-Themen 5
V Applet trotz Ausnahme blockiert Allgemeine Java-Themen 0
T Java Applet Berechtigungen Allgemeine Java-Themen 2
T 2D-Grafik Java Applet Rechtecke und Kreise Allgemeine Java-Themen 1
I Java Applet wird immer blockiert Allgemeine Java-Themen 3
S Applet in html laden; InvocationTargetException,.. nur warum ? Allgemeine Java-Themen 0
S Java Applet wird dauerhaft blockiert Allgemeine Java-Themen 1
T Java applet args Allgemeine Java-Themen 5
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
L Java Applet - ClassNotFound online, offline korrekt Allgemeine Java-Themen 13
Y Applet/Html - Wie Java-Methode aufrufen, die einen Parameter erwartet? Allgemeine Java-Themen 3
H Problem mit Applet (online / offline) Allgemeine Java-Themen 8
K Applet-Einbindung Allgemeine Java-Themen 11
T Java Applet in IE 8+9 Allgemeine Java-Themen 4
P Applet-Zugriffsrechte: merkwürdiges Verhalten Allgemeine Java-Themen 4
P Applet java 1.7 in Website einbinden ? Allgemeine Java-Themen 7
P Applet Applet einbinden Probleme Allgemeine Java-Themen 2
S URL File in Applet Allgemeine Java-Themen 16
S Fehler Applet-HTML Allgemeine Java-Themen 5
C Applet per Greasemonkey aufrufen Allgemeine Java-Themen 9
U Wie kann mit einen Java Applet Dateien erstellen,verschieben und löschen? Allgemeine Java-Themen 9
D JAVA Applet MVC? Allgemeine Java-Themen 2
E Application -> Applet Allgemeine Java-Themen 9
A Applet Mein Applet verursacht Browserabsturz Allgemeine Java-Themen 8
J Erste Schritte Applet allgemeine Funkion Allgemeine Java-Themen 8
T Java Application zu Applet Allgemeine Java-Themen 4
G Input/Output java applet schreibrechte Allgemeine Java-Themen 8
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
G java applet und com-port Allgemeine Java-Themen 7
A Applet Jar Datei auslesen Allgemeine Java-Themen 3
M Applet aus Eclipse Allgemeine Java-Themen 12
M Applet Oberfläche aktualisieren Allgemeine Java-Themen 5
S Applet maximiert starten Allgemeine Java-Themen 5
A Email-Programm aus Applet öffnen Allgemeine Java-Themen 4
M AccessControlException bei Signiertem Applet Allgemeine Java-Themen 12
J Applet Ausgabe beim Speichern ausblenden Allgemeine Java-Themen 4
schlingel Webstart/Applet Problem - Classloader-Bug Allgemeine Java-Themen 7
J Applet zum .java-Dateien auslesen/erstellen Allgemeine Java-Themen 5
S Timer in Applet? Allgemeine Java-Themen 11
S Applet Einbindung - Firefox kp, IE no way Allgemeine Java-Themen 8
N Gallery Remote Applet Allgemeine Java-Themen 2
F Link in Applet "verstecken" Allgemeine Java-Themen 3
F mit Applet auf .htaccess geschützte Dateien zugreifen Allgemeine Java-Themen 3
S Applet in Java NetBeans Allgemeine Java-Themen 3
E Applet neustarten Allgemeine Java-Themen 2
I RMI Signiertes Applet ohne Warnung? Allgemeine Java-Themen 14
S Mediaplayer-Applet Allgemeine Java-Themen 2
D Code wird im Applet nicht ausgeführt. Allgemeine Java-Themen 2
H Applet java.lang.reflect.InvocationTargetException Allgemeine Java-Themen 9
N Protocol Frame/Applet Allgemeine Java-Themen 4
J Aus Applikation ein Applet machen Allgemeine Java-Themen 5
S Directory im Applet auslesen Allgemeine Java-Themen 3
A Textdatei im Applet einlesen Allgemeine Java-Themen 2
S Applet funktioniert online - nur nicht lokal..? Allgemeine Java-Themen 2
N Java Applet im eingeschränkten Benutzeraccount Allgemeine Java-Themen 10
L Applet immer wieder neu laden - Problem Allgemeine Java-Themen 25
L Problem beim animieren von Bildern in Applet Allgemeine Java-Themen 23
L Problem mit Hintergrund bei JAVA Applet Allgemeine Java-Themen 27
T applet und JFrame Allgemeine Java-Themen 12
L Applet Verzeichnis lesen Allgemeine Java-Themen 3
J Ordnerstrukturen mit Applet Allgemeine Java-Themen 14
H importierte Bibliotheken in Applet? Allgemeine Java-Themen 4
lumo Applet exception Allgemeine Java-Themen 6
Developer_X Java Applet - Font aus datei laden Allgemeine Java-Themen 15
W Applet notinited nach Java Versionsupdate Allgemeine Java-Themen 12
M Erkennung von Daten in einem Applet Allgemeine Java-Themen 2
M wieder mal applet probleme Allgemeine Java-Themen 17
0 Sandbox und Applet Kommunikation Allgemeine Java-Themen 9
L Applet Problem - stockende und springende Bilderabfolge Allgemeine Java-Themen 12
ChackZz Applikation zu Applet umbauen Allgemeine Java-Themen 13
V Fehler bei Applet Allgemeine Java-Themen 11
G Frage zu Serverapplikation+Applet Allgemeine Java-Themen 2
MQue aus einem Applet auf Word zugreifen Allgemeine Java-Themen 3
B Java Applet unter Mac wird nicht angezeigt Allgemeine Java-Themen 6
N Applet Probleme Allgemeine Java-Themen 2
G Java Applet für VPN Allgemeine Java-Themen 2
C Applet: JFileChooser: PFad an HTML zürückgeben Allgemeine Java-Themen 4
B Zugriff mit einem Applet auf den Datenträger Allgemeine Java-Themen 11
S Applet Programmierung in Eclipse Allgemeine Java-Themen 12
M Applet in maximaler Bildschirmgroesse oeffnen? Allgemeine Java-Themen 7
J Applet in JAR packen - was muss in main() stehen? Allgemeine Java-Themen 12
P Applet Funktionalität überwachen Allgemeine Java-Themen 3
hdi Applet, JavaScript, PHP, mySQL -> Was brauch ich? Allgemeine Java-Themen 3
C Externe Bilder in Java-Applet blocken? Allgemeine Java-Themen 2
T Mit Applet per RandomAccessFile Datei öffnen Allgemeine Java-Themen 3
Horst79 Ein ganz simpler filebrowser als applet Allgemeine Java-Themen 2
A Problem mit signiertem Applet Allgemeine Java-Themen 8
T File runterladen mit meinem Applet? Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben