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:
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:
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:
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 )
L-ectron-X, kannst du mir aus meiner misslichen Lage helfen=? Natürlich bin ich auch dankbar für Antworten aller anderen User
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 )
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: