# Netbeans eigene Componenten einfügen



## Mammon (9. Dez 2008)

Möchte bei einer Desktop Anwendung in Netbeans eine eigene Componente hinzufügen. Habs derzeit einfach den Layout geändert und dann hinzugefügt was wiederum das ganze Layout des Programms verändert. 
Kann ich im Design Manager ihm direkt eine eigene Componente hinzfügen?


----------



## Gast (10. Dez 2008)

Ja das geht. Hab jetzt zwar kein Netbeans da, aber soweit ich weiss kann man die Komponentenleiste rechts anpassen (einfach mal rechtsklicken und gucken was da so gibt). Man kann dann das Jar auswählen in dem sich die Komponente befindet und dann die benötigte Klasse auswählen. Anschließende kann man die Komponente wie in Matisse üblich per Drag&drop platzieren.


----------



## Mammon (4. Jan 2009)

Ich hab mir eine eigene Javabean erstellt und konnte diese auch hinzufügen aber wenn ich diese in ein Frame einfügen möchte bekomm ich Fehlermeldung das es kein gülitiges Javabean ist.


----------



## L-ectron-X (4. Jan 2009)

Um eine beliebige selbst erstellte Komponente in die Palette einzufügen, klickst du mit der rechten Maustaste in der Ansicht *Projects* auf die entsprechende Komponente im Projekt-Baum.
Daraufhin öffnet sich ein Kontextmenü, an dessen Ende sich der Eintrag *Tools* findet. Weiter geht's über *Add to Palette...* und den Auswahldialog, in welchem du eine passende Kategorie auswählst.
Danach erscheint deine Komponente in der Palette unter der von dir ausgewählten Kategorie und kann per Matisse (GUI-Designer) in deine GUIs eingebaut werden.
Es ist dabei völlig unerheblich, ob du die Komponente mit Matisse zusammengeklickt, oder selbst im Code-Editor geschrieben hast.

Wie hast du es gemacht?


----------



## Mammon (4. Jan 2009)

Ja genau so hab ich es gemacht
Muss die Komponente irgendwas bestimmtes noch implementieren? Ich hab sie von JComponent abgeleitet und paintComponent Methode überschrieben.


----------



## L-ectron-X (4. Jan 2009)

Nein, brauchst nichts anderes machen, das funktioniert so.


----------



## Mammon (4. Jan 2009)

Wenn ich es in ein Frame reinziehe bekomm ich die Meldung
The component connot be instantiated. Please make sure it is a JavaBeans component.

Hier der Code:


```
public class BarChart extends JComponent implements Serializable
{
	
	int width;
	int height;
	String chartName;
	String chartMark;
	Calculation calc;
	
	float temp=0;
	float []array;
	
	float heightdia;
	float widthdia;
	float x0p;
	float y0p;
	float spacex;
	float spacey;
	float balkwidth;
	float spacenumbx;
	float spacenumby;

    public BarChart()
    {



    }
	
	
	public BarChart(int width,int height,String chartName,String chartMark,Calculation calc)
	{
		this.chartName=chartName;
		this.chartMark=chartMark;
		this.width=width;
		this.height=height;	
		this.calc=calc;
		
		
		heightdia=(height-(height/10));					// H�he des Diagramms
		widthdia=(width-(width/10));					// Breite des Diagramms
		x0p=((width/10));								// x des Nullpunktes
		y0p=(heightdia);								// y des Nullpunktes
		spacex=widthdia/10;								// Abstand der Zahlen auf der x Achse
		spacey=heightdia/11;							// Abstand der Prozente auf der y Achse
		balkwidth=widthdia/15;							// Breite des Balkens
		spacenumbx=((height/20));						// Abstand der Zahlen zur x Achse
		spacenumby=((width/12)); 						// Abstand der Zahlen zur y Achse
		
		
		array=calc.getBarHeight(chartName,chartMark);					// Balkenh�he berrechnen
		
		for(int i=0;i<9;i++)
		{
			array[i]=array[i]*(spacey/10);									// Umrechnen der H�he von % in Pixel , (spacey/10)entspricht der H�he von 1 Prozent
		}
				
	}

    @Override
	public void paintComponent(Graphics g)
	{	
		
		Font font = new Font("Serif",Font.PLAIN,10);
		g.setFont(font);
		g.setColor(Color.black);
		//y Achse zeichnen
		g.drawLine((int)x0p,(int)y0p,(int)x0p,(int)(y0p-heightdia));
		//x Achse zeichnen
		g.drawLine((int)x0p,(int)y0p,(int)(x0p+widthdia),(int)y0p);
		
		// Zahlen zeichnen unter der x Achse
	/*	for(int i=1;i<=9;i++)
		{
			g.drawString(Integer.toString(i),(int)(x0p+(spacex*i)),(int)(y0p+spacenumbx));
		}*/
		// Prozente zeichnen neberen der y Achse
		for(int i=10;i<=100;i=i+10)
		{
			g.drawString(Integer.toString(i)+"%",(int)(x0p-spacenumby),(int)(y0p-(spacey*(i/10))));
			g.drawLine((int)(x0p-5),(int)(y0p-(spacey*(i/10))),(int)(x0p+5),(int)(y0p-(spacey*(i/10))));
			
		}
		
		for(int i=0;i<9;i++)
		{
			
			// Farbe wechseln f�r die eigenen Zahlen
			if(chartName.equals("Einsteiger"))
			{
				if(calc.userData.einst==i+1)
				{
					g.setColor(Color.red);
				}
			}
			if(chartName.equals("Rückrat"))
			{
				if(calc.userData.rück==i+1)
				{
					g.setColor(Color.red);
				}
			} 
			if(chartName.equals("Aussteiger"))
			{
				if(calc.userData.ausst==i+1)
				{
					g.setColor(Color.red);
				}
			} 
			if(chartName.equals("Mischfeld1"))
			{
				if(calc.userData.misch1==i+1)
				{
					g.setColor(Color.red);
				}
			} 
			if(chartName.equals("Mischfeld2"))
			{
				if(calc.userData.misch2==i+1)
				{
					g.setColor(Color.red);
				}
			} 
			if(chartName.equals("Carrot"))
			{
				if(calc.userData.carrot==i+1)
				{
					g.setColor(Color.red);
				}
			}  
			g.drawString(Integer.toString(i+1),(int)(x0p+(spacex*(i+1))),(int)(y0p+spacenumbx));								// Zahlen zeichnen unter der x Achse			
			g.drawRect((int)((x0p+(spacex*(i+1)))-balkwidth/2),(int)(y0p)-(int)(array[i]),(int)balkwidth,(int)array[i]);		// Balken zeichnen
			g.setColor(Color.black);
		}
		
	}
}
```


----------



## L-ectron-X (5. Jan 2009)

Ich kanns nicht ausprobieren, ich hab nicht alle Klassen.


----------



## Mammon (12. Jan 2009)

so habs jetzt hinbekommen
kann jetzt meine eigenen Componenten einfügen
Jetzt hab ich das Problem das ich keine eigenen Properties setzen kann wie zB. die Größe 
Hab mir das Turtorial ein wenig angesehen und wird das über Bean Pattern und dann Add|Property gemacht.
Leider weis ich nicht wie ich wie zu nem Bean Pattern komme. Es sollte normal bei den Files unter der Klasse aufscheinen.


----------

