Klasse mit paint() aufrufen

Margos

Grünschnabel
Hallo zusammen,

ich hab mir verschiedene Klassen mit paint() erstellt und diese gezeichnet,nun will ich diese in einer anderen Klasse aufrufen,was aber leider nich funktioniert,daher meine frage,ob jemand weiß,wie ich das bewerkstelligen kann,hab leider sonst nirgendwo etwas gefunden

hier noch der code einer gezeichneten klasse:
Code:
import java.awt.*;

public class Anzeige extends Component{

	public void paint (Graphics g){
		g.setColor(Color.green);
		g.fillArc(20, 20, 200, 200, 0, 30);
		g.setColor(Color.orange);
		g.fillArc(20, 20, 200, 200, 30, 30);
		g.setColor(Color.red);
		g.fillArc(20, 20, 200, 200, 60, 30);
		g.setColor(Color.black);
		g.drawLine(120, 120, 170, 60);
	}
	
}

und hier der klasse,wo das ganze aufgerufen werden soll:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Demo extends JApplet{
	
	
	public void init(){
		
		setSize(600,600);
		GridBagLayout layout = new GridBagLayout();
		setLayout(layout);
		Graphics g = getGraphics();
		JButton start = new JButton("Start");
		JButton exit = new JButton("Exit");
		Anzeige halb = new Anzeige();
		
		exit.addActionListener(new ExitHandler());
	
		addComponent(this, layout, start, 1, 1, 1, 1, 0, 0);
		addComponent(this, layout, exit, 2, 1, 1, 1, 0, 0);
		addComponent(this, layout, halb, 0, 0, 1, 1, 0, 0);
	}
	private void addComponent(Container cont, GridBagLayout gbl, Component c,
			int x, int y, int width, int height, double weightx, double weighty) {
		GridBagConstraints gbc = new GridBagConstraints();

		gbc.insets = new Insets(5, 10, 5, 5);
		gbc.gridx = x;
		gbc.gridy = y;
		gbc.gridwidth = width;
		gbc.gridheight = height;
		gbc.weightx = weightx;
		gbc.weighty = weighty;
		gbl.setConstraints(c, gbc);
		cont.add(c);
	}
}

vielen dank schonmal,

gruß,
margos
 
Hallo,

erstmal möchte ich dich bitten, etwas auf deine Groß- und Kleinschreibung zu achten. Hier wird auf darauf viel Wert gelegt.


Es wird bei dir nicht gezeichnet, weil die Größe deiner Anzeige 0 ist. Du musst mit setPreferredSize deiner Anzeige eine Größe zuweisen.

MFG

Sascha
 
Hallo,

kein Problem, auf die Rechtschreibung werde ich achten ;)

Danke, für die Antwort, ich hab meine Klasse Demo jetzt folgendermaßen erweitert:

Code:
import javax.swing.*;
import java.awt.*;

public class Demo extends JApplet{
	
	public void init(){
		setSize(1000,1000);
		setBackground(Color.WHITE);
		GridBagLayout layout = new GridBagLayout();
		setLayout(layout);
		Graphics g = getGraphics();
		JButton start = new JButton("Start");
		JButton exit = new JButton("Exit");
		Anzeige halb = new Anzeige();
		exit.addActionListener(new ExitHandler());
		halb.setPreferredSize(new Dimension(100,100));
		addComponent(this, layout, start, 1, 1, 1, 1, 0, 0);
		addComponent(this, layout, exit, 2, 1, 1, 1, 0, 0);
		addComponent(this, layout, halb, 0, 0, 1, 1, 0, 0);
	}
	private void addComponent(Container cont, GridBagLayout gbl, Component c,
			int x, int y, int width, int height, double weightx, double weighty) {
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.insets = new Insets(5, 10, 5, 5);
		gbc.gridx = x;
		gbc.gridy = y;
		gbc.gridwidth = width;
		gbc.gridheight = height;
		gbc.weightx = weightx;
		gbc.weighty = weighty;
		gbl.setConstraints(c, gbc);
		cont.add(c);
	}
}

Leider zeigt er das ganze immernoch nicht an. Ist die Zuweisung mit setPrefferedSize in der Form richtig?

Gruß,
Margos
 
Zuletzt bearbeitet:
Das ist schon so richtig, du solltest das Panel nur etwas größer machen.

In der API steht nämlich, dass du mit den ersten beiden werden, die du bei fillArc übergibst, der Mittelpunkt des Kreises ist. Wenn du dann eine Größe von 200 angibst, ist der Radius ja 100.
Also solltest du die Größe des Panels mindestens mal auf 200 setzen.

MFG

Sascha
 
Zurück