JApplet macht Probleme

sinus999

Mitglied
Hallo,

vielleicht kann mir jemand sagen wo der Fehler liegt. Ich möchte während der Laufzeit des Applets den Container (content) neu befüllen bzw. etwas hinzufügen - aber irgendwie klappt das ganze einfache nicht.

Java:
package view;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;



public class main extends JApplet implements ActionListener {

	private boolean log = false;
	
	public void start() {
		System.out.println("Starte");	
	}
	
	public void stop() {
		System.out.println("Stoppe");	
	}
	
	public void init() {
		
		setSize(800,600);
		
	    Container content = getContentPane();
	    content.setBackground(Color.white);
	    content.setLayout(new FlowLayout());
	    
	    JButton btn = new JButton("Button 1");
	    btn.addActionListener(this);
	    
	    content.add(btn);
	    
	    if(log) {
		    content.add(new JButton("noch einer"));
		    content.add(new JButton("und noch einer"));	    	
	    }

		
	}
	
	public void destroy() {
		System.out.println("Beenden");
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		
		System.out.println("Lösche");
		log = true;
		
		removeAll();
		validate();
		repaint();
		
		init();
		

	}
}
 
Dein Fehler liegt imho daran, dass du in der actionPerformed-Methode die init-Methode wieder aufrufst!

Die init-Methode wird zum initialisieren des JApplet einmal gebraucht...danach sollte sie eigentlich tabu sein.
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class main extends JApplet implements ActionListener {
	// KLASSENNAMEN werden GROSS geschrieben
	private boolean log = false;
	// hier würde besser der Name isButtonPushed o.ä passen
	private Container content;

	public void start() {
		System.out.println("Starte");
	}

	public void stop() {
		System.out.println("Stoppe");
	}

	public void init() {

		setSize(800, 600);

		content = getContentPane();
		content.setBackground(Color.white);
		content.setLayout(new FlowLayout());

		JButton btn = new JButton("Button 1");
		btn.addActionListener(this);

		content.add(btn);
		//
		// if (log) {
		// content.add(new JButton("noch einer"));
		// content.add(new JButton("und noch einer"));
		// }

	}

	public void destroy() {
		System.out.println("Beenden");
	}

	@Override
	public void actionPerformed(ActionEvent e) {

		System.out.println("Lösche");
		log = true;
		// content.removeAll();
		addButtonsToContentPane();
		validate();

	}

	private void addButtonsToContentPane() {
		if (log) {
			content.add(new JButton("noch einer"));
			content.add(new JButton("und noch einer"));
		}

	}
}
 

Neue Themen


Zurück
Oben