ich habe folgendes Problem:
Durch einen Button-Klick sollen mehrere Choices auf dem Applet verschwinden und anschliessend ein Rechteck entstehen. Das Ganze geschieht auch. Wenn ich aber jetzt ein anderes Programm(z.B. einen Browser oder word)vor das Applet schiebe, verschwindet die Zeichnung und kommt nicht mehr, bis ich das Applet neustarte!! Was kann man dagegen tun?
Programm(z.B. einen Browser oder word)vor das Applet schiebe,
verschwindet die Zeichnung und kommt nicht mehr, bis ich das
Applet neustarte!! Was kann man dagegen tun?
AWT oder Swing (oder SWT) ? Aber die Methoden repaint() oder refresh() könnten weiterhelfen.
ich verwende AWT. Wo genau muss ich denn refresh einsetzen? Denn in der Paint-Methode selber geht es nicht, es kommen Fehlermeldungen. Repaint hilft leider auch nicht.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
ich verwende AWT. Wo genau muss ich denn refresh einsetzen?
Denn in der Paint-Methode selber geht es nicht, es kommen
Fehlermeldungen. Repaint hilft leider auch nicht.
Zeichnungen verschwinden nur wenn man paint oder getGraphics unsachgemäss benutzt hat. Kannst du mal alles unnötige wegschneiden und ein testapplet online stellen (inklusive Quellcode mit Komentaren ?)
Ich füge mal hier den relevanten Teil des Codes ein und hoffe Ihr könnt mir da weiterhelfen.
public class itemalsfunk extends Applet implements ActionListener
{
Das repaint ruft wieder paint auf, was wieder repaint aufruft, was wieder paint aufruft … ist ein progr nicht ein bisschen langsam ?
}
}
}
Teste mal die Variante:
> public class itemalsfunk extends Applet implements
> ActionListener
> {
>
> static boolean zeichne = false;
> MyCanvas zeichenstift;
>
> public void init ()
> {
> zeichenstift = new MyCanvas();
> panel[3].add(zeichenstift);
> validate();
> }
> public void actionPerformed (ActionEvent e){
> String command = e.getActionCommand();
>
> if(command.equals("Los"))
> {
> Hauptpanel.setVisible(false);
> validate();
> zeichne=true;
> repaint();
> }
> }
> }
>
> class MyCanvas extends Canvas
> {
>
> public MyCanvas()
> {
>
> }
>
> public void paint(Graphics g)
>
> {
> {
>
> g.setColor(Color.lightGray);
> g.fillRect(150,100,100,20);
> g.setColor(Color.black);
> }
> }
> }
und liess dich nochmal in die Erzeugung eigener Canvases ein. Den Ansatz den du benutzt kann man nehmen wenn schnelle Animationen gefragt sind. Aber nicht wenn du einfach nur irgendwas hinmalen möchtest. Und bei Animationen muss man noch ein paar andere Dinge anders machen (z.B. repaint nicht sooft rekursiv aufrufen ...)
cu
ich habe es so, wie Du gesagt nochmal probiert, aber leider hat es auch so nicht funktioniert.
Ich glaube langsam, ich habe etwas im Code falsch gemacht. Ich schicke mal jetzt den gesamten Code mit und wenn Du Zeit und Lust hast, wäre es sehr nett, wenn Du mal da reinschauen könntest. Danke nochmal:
public class Itemalsfunk extends Applet implements ActionListener
{
Panel Hauptpanel = new Panel();
Color bg_co = new Color(158,158,158);
Button b_b = new Button(„Los“);
Panel panel [] = new Panel[12];
String Items [] = {„NOP“, „ADD“, „LOAD“};
Choice choices [] = new Choice [11];
Choice c1 [] = new Choice [11];
Choice c2 [] = new Choice [11];
Choice cerg [] = new Choice [11];
Label labels [] = new Label[11];
Label g_z [] = new Label[11];
Label plus [] = new Label[11];
TextField t = new TextField(8);
MyCanvas canvas;