Java Applet hat Probleme mit Callback ***gelöst***
-
HAllo Leute,
ich habe mir eine Applet geschrieben:
import java.awt.*; import java.applet.Applet; import java.awt.event.*; import java.util.Vector; import TestPackage.ITest; import TestPackage.TestEnum; public class TestApplet extends Applet implements ActionListener { private static final long serialVersionUID = 1L; Button okButton; Button wrongButton; TextField nameField; CheckboxGroup radioGroup; Checkbox radio1; Checkbox radio2; Checkbox radio3; ITest CallbackTestInterface; public String getAppletInfo() { return "TestApplet Version 1.0.0"; } void ResultHandlerTestCallback(TestEnum myenum,Vector<byte[]> vrgubData) { nameField.setText("Read"); repaint(); } public void init() { // Now we will use the FlowLayout setLayout(new FlowLayout()); okButton = new Button("Action!"); wrongButton = new Button("Don't click!"); nameField = new TextField("abcdefghijklm",35); radioGroup = new CheckboxGroup(); radio1 = new Checkbox("Red", radioGroup,false); radio2 = new Checkbox("Blue", radioGroup,true); radio3 = new Checkbox("Green", radioGroup,false); setSize(400,200); CallbackTestInterface = new ITest() {@Override public void ResultHandlerTest(TestEnum myenum,Vector<byte[]> vrgubData){ ResultHandlerTestCallback(myenum,vrgubData); }}; if (null != CallbackTestInterface) add(okButton); // Attach actions to the components okButton.addActionListener(this); wrongButton.addActionListener(this); } public void destroy() { CallbackTestInterface = null; } // When the button is clicked this method will get automatically called // This is where you specify all actions. public void actionPerformed(ActionEvent evt) { // Here we will ask what component called this method if (evt.getSource() == okButton) { // So it was the okButton, then let's perform his actions // reader.SyncGetEPCs(); // Let the applet perform Paint again. // That will cause the aplet to get the text out of the textField // again and show it. repaint(); } // Actions of the wrongButton else if (evt.getSource() == wrongButton) { // Change the text on the button for fun wrongButton.setLabel("Not here!"); // Changes the text in the TextField nameField.setText("That was the wrong button!"); // Lets the applet show that message. repaint(); } } // Here we will show the results of our actions public void paint(Graphics g) { // If the radio1 box is selected then radio1.getState() will // return true and this will execute if (radio1.getState()) g.setColor(Color.red); // If it was not red we'll try if it is blue else if (radio2.getState()) g.setColor(Color.blue); // Since always one radiobutton must be selected it must be green else g.setColor(Color.green); // Now that the color is set you can get the text out the TextField // like this g.drawString(nameField.getText(),20,100); } }
dazu ein Interface und eine Enum definiert:
package TestPackage; import java.util.Vector; public interface ITest { public abstract void ResultHandlerTest(TestEnum myenum,Vector<byte[]> vrgubData); }
package TestPackage; public enum TestEnum { NOERROR((byte)0x00), // 0x00 NODATA((byte)0x01); // 0x01 private byte value; private TestEnum(byte value) { this.value = value; } public byte Get() { return value; } static public TestEnum Set(byte value) { for (TestEnum e : TestEnum.values()) if (value == e.Get()) return e; return null; } }
Wenn ich mein Applet mit Eclipse im Debugger Starte klappt alles wunderbar. Sobald ich es vom Webspace aus probiere geht es nicht. Es kommt keine Fehlermeldung. Wenn ich Zeile 48-51 auskommentiere bekomme ich das Applet angezeigt.
Woran könnte dies liegen?
MfG
Edit: Fehlermeldungen gelöscht, die sind nicht wirklich aufgetreten der Braowser hatte die seite nicht aktualisisert.
-
Hi Leute,
das Problem besteht immer noch. Es kommt nur keine Fehlermeldung sondern das Applet wird einfach nicht angezeigt.
Woran könnte dies liegen.
MfG
-
1. Wo sind die Antworten hin die hier vorher standen?
2. Lern wie man AWT benutzt.
-
asfsafqetdg124 schrieb:
1. Wo sind die Antworten hin die hier vorher standen?
Denk mal drüber nach. Vielleicht kommst Du drauf.
-
Hallo
2. Lern wie man AWT benutzt.
das hilft mir jetzt ungemein weiter
Dieses Programm ist nur ein Sample, dass ich im Netz gefunden habe. Und es geht nur darum ob der eine Button angezeigt wird oder nicht. (Zeile 53)
Das Problem ist das mit dem Interface. Wenn ich dies nutze Stürzt das ganze Applet ohne Fehlermeldung ab, d.h. ich sehe auch keine Textausgaben (wie in Zeile 40), die immer da sein müßte.
MfG
-
Blödsinn, ein Applet "stürzt" nicht "ab" und schon gar nicht ohne Fehlermeldung, guck in die Konsole und poste die Fehlermeldung falls eine auftritt.
Entweder du denkst das Applet sollte irgendwas machen, was aber einfach nicht macht, oder der _gelöschte_ Post der hier vorher stand hatte recht und du hast es einfach nicht geschafft das Applet richtig zu deployen.
-
OK hab das Problem gefunden
Ich hatte die Datei mit dem $1 nicht mit auf den server kopiert. Nur komisch das keine Fehlermeldung kam.
MfG
-
Natürlich, es kommt eine ClassNotFoundException ...
Übrigens stand das schon vor 3 Wochen hier in dem Post von dem anderen Gast, der gelöscht wurde, glückwunsch...
-
Hallo,
du hattest recht es kam eine Fehlermeldung, ich hab sie nur nicht gesehen da die Java Konsole nicht aufging
MfG
-
einfacher ist es natürlich alle Funktionen durch implements hinzuzufügen:
import java.awt.*; import java.applet.Applet; import java.awt.event.*; import java.util.Vector; import TestPackage.ITest; import TestPackage.TestEnum; public class TestApplet extends Applet implements ActionListener, ITest { private static final long serialVersionUID = 1L; Button okButton; Button wrongButton; TextField nameField; CheckboxGroup radioGroup; Checkbox radio1; Checkbox radio2; Checkbox radio3; public String getAppletInfo() { return "TestApplet Version 1.0.0"; } void ResultHandlerTestCallback(TestEnum myenum,Vector<byte[]> vrgubData) { nameField.setText("Read"); repaint(); } public void init() { // Now we will use the FlowLayout setLayout(new FlowLayout()); okButton = new Button("Action!"); wrongButton = new Button("Don't click!"); nameField = new TextField("abcdefghijklm",35); radioGroup = new CheckboxGroup(); radio1 = new Checkbox("Red", radioGroup,false); radio2 = new Checkbox("Blue", radioGroup,true); radio3 = new Checkbox("Green", radioGroup,false); setSize(400,200); add(okButton); // Attach actions to the components okButton.addActionListener(this); wrongButton.addActionListener(this); } public void destroy() { CallbackTestInterface = null; } // When the button is clicked this method will get automatically called // This is where you specify all actions. public void actionPerformed(ActionEvent evt) { // Here we will ask what component called this method if (evt.getSource() == okButton) { // So it was the okButton, then let's perform his actions // reader.SyncGetEPCs(); // Let the applet perform Paint again. // That will cause the aplet to get the text out of the textField // again and show it. repaint(); } // Actions of the wrongButton else if (evt.getSource() == wrongButton) { // Change the text on the button for fun wrongButton.setLabel("Not here!"); // Changes the text in the TextField nameField.setText("That was the wrong button!"); // Lets the applet show that message. repaint(); } } // Here we will show the results of our actions public void paint(Graphics g) { // If the radio1 box is selected then radio1.getState() will // return true and this will execute if (radio1.getState()) g.setColor(Color.red); // If it was not red we'll try if it is blue else if (radio2.getState()) g.setColor(Color.blue); // Since always one radiobutton must be selected it must be green else g.setColor(Color.green); // Now that the color is set you can get the text out the TextField // like this g.drawString(nameField.getText(),20,100); } @Override public void ResultHandlerTest(TestEnum myenum, Vector<byte[]> vrgubData) { // TODO Auto-generated method stub } }