actionPerformed(..) reagiert nicht

Crach

Mitglied
Hallo,

Hab folgendes Problem:
Bastel derzeit an einem JApplet und es funktioniert auch soweit alles schön - aber leider nur im Eclipse. Wenn ich die class-Dateien exportiere und dieses Applet mittels Firefox dann teste reagieren die Button nicht mehr.

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
...
import javax.swing.JApplet;
import java.awt.Dimension;
import javax.swing.JButton;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Point;
import java.awt.Color;
import javax.swing.*;
import java.awt.Font;
...
import javax.swing.JLabel;
import javax.swing.JEditorPane;
import javax.imageio.*;
import java.lang.Math;
import java.net.URL;
import javax.swing.JSlider;
import javax.swing.SwingConstants;
...

public class testapplet extends JApplet
{

.......
.......




	private JButton getB_test() {
		if (b_test == null) {
			try {
				b_test = new JButton();
				b_test.setBounds(new Rectangle(40, 240, 25, 25));  // Generated
				b_test.setName("b_test");  // Generated
				b_test.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						funktionone(b_test);   //setEnabled(false)
						aktiv(1); //setzt ne anderen button auch noch auf false
					}
				});
			} catch (java.lang.Throwable e) {
				
			}
		}
		return b_test;
	}

...
...
}

hab dann noch versucht ..einfach " implements ActionListener" dahinter zu schreiben, nur dann muss die klasse abstrakt sein..nur dabei kommen dann die fehler:

-----------------------------------------------------------------
Laden: Instanz von testapplet.class kann nicht erstellt werden.
java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
-------------------------------------------------------------------

:confused: bin überfragt. Wie schafft man es nun, dass die Button reagieren?
 
Moin!
Warum genau das nun nicht funktioniert kann ich anhand des Quelltextes nicht sagen, bzw. mir fällt da nix auf.. Aber

[hab dann noch versucht ..einfach " implements ActionListener" dahinter zu schreiben, nur dann muss die klasse abstrakt sein..nur dabei kommen dann die fehler:

Klar, wenn deine Klasse das ActionListener Interface implemtieren soll, musst du ihr dann auch eine Methode
Code:
public void actionPerformed(ActionEvent e){}
hinzufügen. Das ist die Bedingung für die Implementierung eines ActionListeners.
Dem Button kannst du nun deine Klasse als ActionListener zuweisen und in dieser Methode dann das Eventhandling machen..


*grüssle*
MeinerEiner
 
Danke dir,

Funktioniert nur seltsamerweise auch nicht.
Ob Java mit zu vielen Funktionen/Methoden überfordert ist?


EDIT:
Habs mal mit einem MousListener probiert aber der reagiert auch nicht darauf im IE/Firefox - funkt. nur im Eclipse
 
Zuletzt bearbeitet:
okay..entweder bin ich zu blöd, ein einfaches Applet zu basteln..oder ich weiß auch nicht^^..
Hab es diesmal mit was einfachem probiert - per button-druck wird eine Methode ausgelöst und ein wert wird in einem JLabel geändert.

Code:
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JApplet;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JLabel;

public class obdasgeht extends JApplet {

	private JPanel jContentPane = null;
	private JButton jButton = null;
	private JLabel jLabel = null;

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	
	public void setzewert()
	{
		this.jLabel.setText("huhu");
	}
	
	
	
	private JButton getJButton() {
		if (jButton == null) {
			try {
				jButton = new JButton();
				jButton.setBounds(new Rectangle(91, 46, 92, 24));  // Generated
				jButton.addActionListener(new java.awt.event.ActionListener() {
					public void actionPerformed(java.awt.event.ActionEvent e) {
						setzewert();
					}
				});
			} catch (java.lang.Throwable e) {
				// TODO: Something
			}
		}
		return jButton;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	/**
	 * This is the xxx default constructor
	 */
	public obdasgeht() {
		super();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	public void init() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(98, 104, 103, 26));  // Generated
			jLabel.setText("JLabel");  // Generated
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJButton(), null);  // Generated
			jContentPane.add(jLabel, null);  // Generated
		}
		return jContentPane;
	}

}



Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<applet code="obdasgeht.class" height="500" width="500"></applet>

</body>
</html>

Warum reagiert der Button nicht beim klicken im Firefox/IE ? Was muss man bei JApplets noch beachten?
 
Also ich hab deinen code ausprobiert und er funktioniert tadelos bei mir.. auch im Browser..

Vielleicht blockiert also der Browser da irgendetwas? Schau mal in deinen Einstellungen nach, ob du da etwas findest...

*grüssle*
MeinerEiner
 
Danke dir fürs testen,

und hab auch grad den Fehler gefunden..^^ hab beim exportieren nie die .classpath und .project mit rüber kopiert. Muss also sicher daran gelegen haben.:rolleyes:

thx nochmal ;-)
 
Zurück