Netbeans eigene Componenten einfügen

Status
Nicht offen für weitere Antworten.

Mammon

Mitglied
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?
 
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.
 
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.
 
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?
 
Ja genau so hab ich es gemacht
Muss die Komponente irgendwas bestimmtes noch implementieren? Ich hab sie von JComponent abgeleitet und paintComponent Methode überschrieben.
 
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:

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);
		}
		
	}
}
 
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.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben