Applet Applet Vererbung/Überladen

JavaPaint

Mitglied
Hallo Community,

ich habe eine grundsätzliche Frage zur Vererbung von Applets:

Ich möchte mein Programm möglichst übersichtlich gestalten und ein GUI Applet vererben
um ActionListener etc "hinzuzufügen".

Ich habe eine Klasse "MalPanel", von der "Farben" erbt. In Farben implementiere ich die ActionListener Schnittstelle. Aus einem Grund kennt "Farben" allerdings nicht "Graphics g" obwohl dieses in "MalPanel" als public deklariert wurde.

Was habe ich falsch?
In actionPerformed(...) gibt der Compiler ab
Code:
g.setColor(Color.black);
hunderte Fehlermeldungen :p
Schonmal ein Danke für eventuelle Hilfe :)

MalPanel
Java:
import java.awt.*;

import javax.swing.*;


public class MalPanel extends JApplet{

	public JButton bMal,bDel,bBlau,bRot,bGr,bGe,bLn;
	public Container malPanel,ContentPane;
	public Graphics g;
	private Image image;
	
	public MalPanel(){
		
		// SteuerPanel
		Container btnPanel = new JPanel();		// PanelContainer für Buttons
		btnPanel.setLayout(new GridLayout(7,2));	// Layout setzen
		
		ImageIcon rIcon = new ImageIcon ("/red.PNG"); // Button mit Icon und Beschriftung 
		ImageIcon bIcon = new ImageIcon ("/blue.PNG"); // Button mit Icon und Beschriftung 
		ImageIcon grIcon = new ImageIcon ("/green.PNG"); // Button mit Icon und Beschriftung  
		ImageIcon geIcon = new ImageIcon ("/yellow.PNG"); // Button mit Icon und Beschriftung 
		ImageIcon blIcon = new ImageIcon ("/black.PNG"); // Button mit Icon und Beschriftung 

			
		
		bMal = new JButton("Schwarz",blIcon);		// Button erstellen
		bDel = new JButton("Löschen");	
		bBlau = new JButton("Blau",bIcon);	
		bRot = new JButton("Rot",rIcon);	
		bGr = new JButton("Grün",grIcon);	
		bGe = new JButton("Gelb",geIcon);	
		bLn = new JButton("Line");
		btnPanel.add(bMal);					// Dem SteuerPanel hinzufügen
		btnPanel.add(bBlau);
		btnPanel.add(bRot);
		btnPanel.add(bGr);
		btnPanel.add(bGe);	
		btnPanel.add(bLn);		
		btnPanel.add(bDel);

		
		// Malfläche - Panel
		malPanel = new JPanel();		// PanelContainer für Malfläche 
		malPanel.setBackground(Color.white);
		
		// Header
		JLabel Head = new JLabel("Java Paint");
		

		
		ContentPane = getContentPane();		// Container hinzufügen
		ContentPane.setLayout(new BorderLayout());
		
		ContentPane.add("North",Head);
		ContentPane.add("West",btnPanel);
		ContentPane.add("Center",malPanel);

	}	
}


Farben
Java:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


public class Farben extends MalPanel implements ActionListener{
	
	public void init(){
		setSize(500,500);					// Fenstergröße festlegen
		System.out.println("Farben();");
		bMal.addActionListener(this);		// EventListener hinzufügen
		bDel.addActionListener(this);
		bBlau.addActionListener(this);
		bRot.addActionListener(this);
		bGr.addActionListener(this);
		bGe.addActionListener(this);
		bLn.addActionListener(this);		
	}
	
	// Eventhandling
	public void actionPerformed(ActionEvent e){
		
		if (e.getSource() == bMal) { 
			System.out.println("schwarz");
			g.setColor(Color.black);	// Schwarz einstellen

		}
		if (e.getSource() == bDel){
			g.setColor(Color.white);	                   	 	// "Löschen" einstellen
			g.fillRect(malPanel.getBounds().x,malPanel.getBounds().y , malPanel.getBounds().width, malPanel.getBounds().height);

		}
		if (e.getSource() == bBlau) {
			g.setColor(Color.blue);		// Blau einstellen
			System.out.println("blau");
		}
		if (e.getSource() == bRot) 	g.setColor(Color.red);		// Rot einstellen
		if (e.getSource() == bGr)   g.setColor(Color.green);	// Grün einstellen
		if (e.getSource() == bGe)	g.setColor(Color.yellow);	// Rot einstellen
		if (e.getSource() == bLn){}	// Linie einstellen
		
	}
	
}
 
Zuletzt bearbeitet:

L-ectron-X

Gesperrter Benutzer
Ein Applet sollte ein Applet bleiben, ein JPanel auch ein JPanel.
Das Applet ist in diesem Fall der Top-Level-Container, der quasi die GUI-Inhalte verwaltet.

Daher wäre es richtig, wenn du in die init()-Methode deines Applets nur Sachen schreibst, die das Applet initialisieren. Bspw. also beteiligte GUI-Komponenten initialisieren.

Im Panel wird dann gezeichnet. Das Applet muss von all dem nichts wissen.
Wenn du nun vom Applet erbst, macht das kaum Sinn, weil du nichts wirklich Neues einführst. Das Applet verhält sich nicht anders.
 

JavaPaint

Mitglied
@xehpuk
Ja, aber warum ist g ein Null-Objekt?

@L-ectron-X
Also baue ich erst Oberfläche, Listener etc auf und am Ende habe ich ein Applet, das die einzelnen Klassen verwendet und das gesamte Applet initialisiert?
 

L-ectron-X

Gesperrter Benutzer
Genau. Schreibe deine Panels und am Ende fügst du nur das relavante Panel in dein Applet ein.
Das kann z.B. ein MainPanel sein, das per CardLayout die anderen Panels einblenden kann, wenn sie aufgerufen werden.

g ist null, weil es keinen Bezug zu irgend einem Graphics-Objekt bekommt. Die Referenz wird doch nirgends initialisiert.
Der Programmierer macht das eigentlich auch nicht. Er bekommt bei der Benutzung (überschreiben) der paintComponent()-Methode eine Graphics-Umgebung von der VM gestellt, die er in seinem Code zum Zeichnen benutzt.

getGraphics() aufzurufen, oder irgendwie Graphics-Objekte durch Klassen zu reichen ist zu 99% verkehrt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Grafikformat für AWT-Applet? AWT, Swing, JavaFX & SWT 0
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
T Applet Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 8
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
S Sandboxed Applet weiterhin moeglich..? AWT, Swing, JavaFX & SWT 5
S Oracle's neue Sicherheitseinstellungen zerstoeren mein Applet. Was tun? AWT, Swing, JavaFX & SWT 3
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
U CardLayout im Applet AWT, Swing, JavaFX & SWT 4
G JavaFX mit ANT deployen als Applet AWT, Swing, JavaFX & SWT 3
S Applet Application 2 applet AWT, Swing, JavaFX & SWT 3
T Applet JTattoo Look and Feel AWT, Swing, JavaFX & SWT 5
T Signiertes Applet Urheber angeben AWT, Swing, JavaFX & SWT 5
S Applet Repaint AWT, Swing, JavaFX & SWT 3
B Java-Applet Parameter übergabe? AWT, Swing, JavaFX & SWT 2
M Applet mit Bildern AWT, Swing, JavaFX & SWT 2
T Applet in JSP einbinden AWT, Swing, JavaFX & SWT 4
R MouseEvent.getX() liefert in Applet Screen-Koordinate AWT, Swing, JavaFX & SWT 2
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
A Applet Applet vom Web-Server aus aufrufen AWT, Swing, JavaFX & SWT 11
A Applet Applet startet nicht AWT, Swing, JavaFX & SWT 2
P Tatsächliche Größe für Applet AWT, Swing, JavaFX & SWT 3
B Applet Aus Applet signiertes jar mit externen libs erstellen AWT, Swing, JavaFX & SWT 9
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
M Warum funktioniert mein Applet nicht? AWT, Swing, JavaFX & SWT 6
D Applet hintergrund wird nicht weiß AWT, Swing, JavaFX & SWT 2
R Applet JavaScript Methodenaufruf AWT, Swing, JavaFX & SWT 2
A Applet Animiertes gif in awt applet anzeigen AWT, Swing, JavaFX & SWT 11
X Applet Java Applet Datei Ausführung AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4
A Applet Applet aus Code neu starten AWT, Swing, JavaFX & SWT 2
K Applet erkennt keine Frameverkleinerung AWT, Swing, JavaFX & SWT 5
S Applet funktioniert nach Browserreload nicht richtig AWT, Swing, JavaFX & SWT 2
T Applet Applet vs. WebStart AWT, Swing, JavaFX & SWT 4
S Applet starten AWT, Swing, JavaFX & SWT 4
K JTable im Browser nicht zu sehen - Applet AWT, Swing, JavaFX & SWT 6
B Applet Button oder Toolbar in einem Applet AWT, Swing, JavaFX & SWT 5
V Applet mit Bildbearbeitung AWT, Swing, JavaFX & SWT 3
V Applet Applet starten schlägt fehl AWT, Swing, JavaFX & SWT 2
W Button in Applet AWT, Swing, JavaFX & SWT 9
kniffel GUI-Applet JTable füllt Hintergrund völlig aus AWT, Swing, JavaFX & SWT 4
J Applet Java-Applet friert mit Firefox ein AWT, Swing, JavaFX & SWT 8
J Applet Tetris flackert AWT, Swing, JavaFX & SWT 9
F Applet Applet starten...(+Timer?) AWT, Swing, JavaFX & SWT 12
S [JAVA] JFrame in Applet/JApplet AWT, Swing, JavaFX & SWT 14
D Applet Applet das auf fremden Libraries basiert einbinden? AWT, Swing, JavaFX & SWT 20
M Applet wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
E Applet Neuen Tab aus Applet öffnen AWT, Swing, JavaFX & SWT 3
G Applet, Link ermitteln, dem der Benutzer gefolgt ist AWT, Swing, JavaFX & SWT 2
K Email versenden ueber Applet AWT, Swing, JavaFX & SWT 11
S Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 6
S Button aktivieren (Applet) AWT, Swing, JavaFX & SWT 2
3 Applet Applet zeigt nur weiße Fläche AWT, Swing, JavaFX & SWT 15
B 2 Probleme (JFrame & Applet) AWT, Swing, JavaFX & SWT 7
A Programmieren einer Agenda mit einer Liste (als Applet und .txt zum Speichern) AWT, Swing, JavaFX & SWT 7
H applet Methode aus abstrakter Klasse aufrufen AWT, Swing, JavaFX & SWT 12
H Applet - Hilfedateien im Browser öffnen / eine Webseite laden AWT, Swing, JavaFX & SWT 6
O JPanel aus Applet starten AWT, Swing, JavaFX & SWT 3
O Applet-Steuerung mit Tastaturbefehlen AWT, Swing, JavaFX & SWT 3
F 4-Gewinnt als Applet AWT, Swing, JavaFX & SWT 24
F Applet vs Stand-Alone-Client AWT, Swing, JavaFX & SWT 3
B AWT Bild als Hintergrund im Applet AWT, Swing, JavaFX & SWT 2
D Probleme mit MouseWheelListener und JLayeredPane in Applet AWT, Swing, JavaFX & SWT 2
G Applet und Swing Anwendung AWT, Swing, JavaFX & SWT 2
S Applet - Aerger mit dem Hintergrundbild - JLabel und JTextfield AWT, Swing, JavaFX & SWT 7
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
R for-Schleife in Applet ausgeben AWT, Swing, JavaFX & SWT 3
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
W Swing heapsort + Applet AWT, Swing, JavaFX & SWT 4
P Diagramm in einem Applet zeichnen AWT, Swing, JavaFX & SWT 4
M Java Applet JTable/JList AWT, Swing, JavaFX & SWT 6
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2
K Alternative zu Applet mit HTML-Einbindung AWT, Swing, JavaFX & SWT 11
J Java-Applet beenden AWT, Swing, JavaFX & SWT 3
R Applet aus JFrame starten AWT, Swing, JavaFX & SWT 2
T Konfiguration speichern in Applet AWT, Swing, JavaFX & SWT 2
P Swing Roter Faden beim Applet GUI Programmieren AWT, Swing, JavaFX & SWT 2
T HTML Seite neu laden mittels Applet AWT, Swing, JavaFX & SWT 2
T Icon von Frame ändern - Applet AWT, Swing, JavaFX & SWT 2
T Java Applet beenden AWT, Swing, JavaFX & SWT 2
M Swing Butten & TextFields aus Applet im JFrame nicht sichtbar AWT, Swing, JavaFX & SWT 2
I Swing .Jar Datei - funktioniert - nun als Applet AWT, Swing, JavaFX & SWT 13
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
M AWT text im applet formatieren AWT, Swing, JavaFX & SWT 5
L Applet Frage AWT, Swing, JavaFX & SWT 25
1 Verständnisprobleme bei Java Applet AWT, Swing, JavaFX & SWT 13
B Unterschied JFrame/Applet AWT, Swing, JavaFX & SWT 12
T [Applet] startet in Eclipse aber nicht im Browser AWT, Swing, JavaFX & SWT 2
G JSlider in Applet AWT, Swing, JavaFX & SWT 4
P Swing Applet AWT, Swing, JavaFX & SWT 2
R problem mit bildanzeige in applet und main AWT, Swing, JavaFX & SWT 2
A Applet kommt offline nicht mit FileReader zurecht AWT, Swing, JavaFX & SWT 3
F Applet und Popup AWT, Swing, JavaFX & SWT 4
G Wie startet man ein Applet ? AWT, Swing, JavaFX & SWT 4
R Ein Applet von einem Applet öffnen lassen AWT, Swing, JavaFX & SWT 2
Z Applet ausblenden AWT, Swing, JavaFX & SWT 5
G JList wird in einem Applet nur teilweise aktualisiert AWT, Swing, JavaFX & SWT 12
P Applet darstellung von Textfeldern Problem AWT, Swing, JavaFX & SWT 3
I Applet --> neues Fenster öffnen AWT, Swing, JavaFX & SWT 11
I Applet mit Panels (so richtig, gehts besser?) AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben