Zum Inhalt springen

Einfaches GUI - Brauche Hilfe


ShamaN

Empfohlene Beiträge

Ich brauche ein GUI mit 5 Spalten und beliebig vielen Zeilen.

In die erste Zeile sollen 5 Labels.

In allen darauffolgenden Zeilen soll die erste Spalte leer sein( weil ich da mit der Methode paint Kreise rein malen möchte.)

In alle restliche Zellen sollen Textfelder.

Also mach ich zwei GridLayouts(1. einspaltig, 2.zweispaltig) und packe diese in ein Borderlayout und setze das 1. auf West und das 2. auf "East"... Aber das ganze funktioniert nicht.

Hier der Quelltext dazu:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class Fenster extends Frame

{

public Fenster()

{

int x=5;

int y=8;

Panel p1 = new Panel();

setLayout(new GridLayout(1, y)); // Layoutmanger

p1.add(new Label("Bewertung")); // Überschriften

Panel p2 = new Panel();

setLayout(new GridLayout(x-1, y)); // Layoutmanger

p2.add(new Label("Vorgang"));

p2.add(new Label("Bearbeiter"));

p2.add(new Label("Fälligkeit"));

p2.add(new Label("Anmerkung"));

for(int i=y; i!=2; i--)

{

p2.add(new TextField("")); // Datensätze

p2.add(new TextField(""));

p2.add(new TextField(""));

p2.add(new TextField(""));

}

Panel p0 = new Panel();

setLayout(new BorderLayout());

p0.add(p1,"West");

p0.add(p2,"Center");

this.add(p0);

this.add(new Button("Speichern"));

this.addWindowListener(new WindowListener(true));

setBackground (Color.lightGray);

setSize (500 ,(y+2)*30);

setVisible (true);

}

Kann mir jemand helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für die Zukunft: Wenn du hier Quellcode postest, dann mach dir bitte die mühe es in CODE-Tags einzufügen. SO kann man den Code besser vom Rest des Textes unterscheiden und eventuelle Einrückungen bleiben erhalten.

Ich werde mal deine Code kommentieren vielleicht hilft es dir.


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

//Du importierst das gesamte swing package benutzt aber nur awt.

//Ich weiß auch nicht warum du nur awt benutz. Hat das einen 

//besonderen Grund? Da awt als veraltet angesehen werden kann, 

//wüsste ich jetzt keinen Grund warum man nicht swing benutzen sollte.


class Fenster extends Frame

{


	public Fenster()

	{


		int x=5;

		int y=8;


		Panel p1 = new Panel();

		setLayout(new GridLayout(1, y));

//Du muss hier aufpassen! Das setLayout() wird hier für das Frame 

//aufgerufen nicht, wie du vielleicht wolltest, für das Panel.

		p1.add(new Label("Bewertung")); // Überschriften



		Panel p2 = new Panel();

		setLayout(new GridLayout(x-1, y));

//hier wieder setLayout auf das Frame

		p2.add(new Label("Vorgang"));

		p2.add(new Label("Bearbeiter"));

		p2.add(new Label("Fälligkeit"));

		p2.add(new Label("Anmerkung"));


		for(int i=y; i!=2; i--)

		{

//üblicherweise wird bei bei for-schleifen mit <, >, <= oder >= gearbeitet

//und nicht mit != bzw ==

			p2.add(new TextField("")); // Datensätze

			p2.add(new TextField(""));

			p2.add(new TextField(""));

			p2.add(new TextField(""));

		}

		Panel p0 = new Panel();

		setLayout(new BorderLayout());

//setLayout....

		p0.add(p1,"West");

//Hier solltest du p0.add(p1, BoderLayout.WEST); aufrufen

		p0.add(p2,"Center");


		this.add(p0);


		this.add(new Button("Speichern"));


//du hast beim letzten setLayout dem Frame das Borderlayout vergeben

//und nun willst du p0 und den Button hinzufügen. wenn du dann keine 

//orientierung (z.B. Borderlayout.SOUTH) mitgibst werden die Komponenten

//automatisch im Center eingefügt. So kommt es das der Button quasi "über"

//dem Panel liegt


		this.addWindowListener(new WindowListener(true));

//diese Initialisierung von WindowListener ist schlichtweg nicht kompilierfähig,

//da es sich hierbei um ein Interface handelt.

		setBackground (Color.lightGray);

		setSize (500 ,(y+2)*30);

		setVisible (true);

	}

Wahrscheinlich ist es besser du beschäftigst dich noch einmal Grundlegend mit Java. Eine gute Quelle ist hier OpenBook Java ist auch eine Insel; Kapitel 15 und 16 handeln dabei von GUI-Programmierung aber es könnte die sicherlich nicht schaden auch nochmal den Rest zu "überfliegen".

Aber auch ein Blick in die Java-Api kann nie schaden (z.B. steht dort auch drin wie man die Layouts benutzt).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mal von den von Wayne angesprochenen Problemen mal angesehen, warum machst du das mit 2 verschiedenen Panels?

Wenn du 5 Spalten mit unendlichen vielen Zeilen haben willst, und davon die erste Zeile alle Spalten ne Überschrift haben und ab der 2. Zeile alle außer der ersten Spalte Textfelder sind, reicht doch vollkommen ein Panel mit dem GridLayout.

Du sagst dem GirdLayout dann einfach, es soll maximal 5 Spalten haben, die Zeilenanzahl ist egal, fügst dann 5 Labels hinzu du die beschriftest, und für alle restlichen Zeilen fügst du ein leeres Label (auf dem du dann fröhlich zeichnen kannst) und danach 4 Textfelder ein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

weil dann kein Kreis auftaucht ^^

Ich nahm an, dass ich nicht auf ein Label zeichnen kann.

Folgendes funktioniert z.b. nicht:

public class Fenster extends Frame {

Fenster()

{

super("fenster");

int x=5;

int y=8;

Panel p1 = new Panel();

setLayout(new GridLayout(y, 1)); // Layoutmanger

add(new Label("Bewertung")); // Überschriften

add(new Label("Vorgang"));

add(new Label("Bearbeiter"));

add(new Label("Fälligkeit"));

add(new Label("Anmerkung"));

for(int i=y; i!=2; i--)

{

add(new Label("")); // Datensätze

add(new TextField(""));

add(new TextField(""));

add(new TextField(""));

add(new TextField(""));

}

this.addWindowListener(new WindowListener(true));

this.setBackground(Color.lightGray);

this.setSize(x*100,y*50);

this.setVisible(true);

}

public void paint (Graphics g)

{

g.drawOval (40, 130, 15, 15);

}

}

public class main {

public static void main(String[] args) {

Fenster f = new Fenster();

}

}

public class WindowListener extends WindowAdapter

{

private boolean ende;

public WindowListener (boolean ende) { this.ende = ende; } //Konstruktoren

public WindowListener () { this.ende = false; }

public void windowClosing (WindowEvent event) //Methoden

{

event.getWindow().setVisible(false);

event.getWindow().dispose();

if (ende)

{

System.exit(0);

}

}

}

Alles bis auf den Kreis wird angezeigt

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein letzter Versuch: Benutze bitte die CODE-Tags wenn du Code postest. Beim nächsten mal ohne wird keine Hilfe mehr von mir kommen.

Dein Quellcode zeigt ganz eindeutig, dass du nur begrenzte Kenntnisse in Java / OOP-Programmierung allgemein zu haben scheinst. Das ist nicht schlimm, da jeder einmal anfängt, aber du solltest dir wirklich noch einmal das ein oder andere (Online-) Buch oder Tutorial durchlesen.

Dein Code strotz nur so von Fehlern, das es am besten ist du fängst neu an und arbeitest dich in _kleinen_ Schritten vorwärts.

@Dragon8: Mich beschleicht das Gefühl, dass er das nicht hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tut mir leid, ich hab die Kommentare, die du mir in den Quellcode geschrieben hast völlig überlesen, jetz wird mir einiges klar ^^.

Ist schon was länger her, dass ich Java programmiert hab und hab mir für das Programm Code aus meinen damaligen Programmen rauskopiert.

Da hab ich awt einfacher verstanden. ^^

Die Kommentare sind hilfreich aber

this.addWindowListener(new WindowListener(true));

//diese Initialisierung von WindowListener ist schlichtweg nicht kompilierfähig,

//da es sich hierbei um ein Interface handelt.

will mir nicht ganz einleuchten.

Jetzt hab ich mich mal etwas informiert wie ich die paint Methode eines Labels überschreibe und kam zu folgendem Ergebnis:


class test extends label{

void paint(Graphics g)

{

super.draw(g)

g.drawoval(123,12,345,23);

}}

Kann das aber leider nicht mehr vor morgen testen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Kommentar zu deinem WindowListener lag einfach daran, dass du im ersten Post uns nicht mitgeschrieben hast, dass bei dir der WindowListener eine eigen Klasse ist, die vom WindowsAdapter erbt.

Wir sind jetzt einfach davon ausgegangen dass du dort das normale Interface WindowListener meinst, und so ist der Code nunmal nich ausführbar gewesen.

Das mit der überschriebenen paint()-Methode sieht in Ordnung aus, solange du die restlichen Fehler in deinem vorherigen Quellcode noch ausmerzt, könnte das langsam auch was werden. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt hab ich nochmal ein wenig gewerkelt aber ein Kreis fehlt immer noch ^^


import java.awt.*;



public class Fenster extends Frame {


	Fenster()

	{

		super("fenster");

	int x=5;

	int y=8;

	int a=2; //Anzahl der "nicht-Datensätze" im GridLayout	


	Panel p1 = new Panel();

	p1.setLayout(new GridLayout(y+a, x)); // Layoutmanger

		p1.add(new Label("Bewertung")); // Überschriften	

		p1.add(new Label("Vorgang"));

		p1.add(new Label("Bearbeiter"));

		p1.add(new Label("Fälligkeit"));

		p1.add(new Label("Anmerkung"));


	for(int i=y; i>0; i--)

	{	

		p1.add(new Label()); // Datensätze

		p1.add(new TextField(""));

		p1.add(new TextField(""));

		p1.add(new TextField(""));

		p1.add(new TextField(""));	

	}

	p1.add(new Button("Speichern"));


	this.add (p1); //Layout auf das Frame setzen


	this.addWindowListener(new WindowListener(true));

	this.setBackground(Color.lightGray);

	this.setSize(x*100,y*40);

	this.setVisible(true);

	}



	public void paint (Graphics g)

	{

	//g.setColor(Color.RED);

	//g.drawOval (40, 130, 15, 15);

	}


}

public class myLabel extends Label

{



		public void paint(Graphics g)

		{

			super.paint(g);

			g.setColor(Color.RED);

			g.drawOval(50,150,15,15);

		}

}

main und WIndowListener wie vorher auch schon.

Die Anordnung auf dem Frame sitzt bis auf den fehlenden Kreis.

Muss ich vllt noch einen Konstruktor für meine Klasse myLabel schreiben und den von der Klasse Fenster aufrufen wenn ich auf dem jeweiligen Label zeichnen möchte?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich weiss nicht ob ich das jetzt richtig verstanden habe, ich hab mal folgendes verändert:



 //In der Klasse Fenster...

for(int i=y; i>0; i--)

	{	

		p1.add(new myJLabel("")); // Datensätze

		p1.add(new JTextField(""));

		p1.add(new JTextField(""));

		p1.add(new JTextField(""));

		p1.add(new JTextField(""));	

	}



public class myJLabel extends JLabel

{

		public myJLabel(String text) //Konstruktor

		{

			super.addNotify();

			setText(text);


		}


		public String getText()

		{

			return super.getText();

		}


		public synchronized void setText(String text)

		{

			super.setText(text);

		}


		public void paint(Graphics g)

		{

			super.paint(g);

			g.setColor(Color.RED);

			g.drawOval(50,60,15,15);

		}

}

Jetzt erzeuge ich doch ein Objekt meiner eigenen Klasse myJLabel welches übermalt werden können sollte?

PS: Ich hab das ganze jetzt mal in swing umgeändert.

EDIT: funktioniert jetzt, Ich hab die Koordinaten vom Frame aus eingestellt und nicht vom Label

Danke ;)

Bearbeitet von ShamaN
Link zu diesem Kommentar
Auf anderen Seiten teilen

Soo...

Jetzt habe ich weiter programmiert und möchte eine Menüleiste in mein Programm einführen. Das habe ich auch gemacht, allerdings wird anstatt der Menüleiste der Hintergrund gezeigt, also ein Teil der Eclipse, als ob die Menüleiste durchsichtig wär.

Dieser bleibt auch wenn ich das Fenster verschiebe.

Wenn ich einmal darauf klicke kommt dann meine Menüleiste, allerdings wenn ich auf ein Menü klicke, werden die Menüitems von meinen Gridlayout überdeckt.

Andersrum wäre es mir logischerweise lieber :P

Hier mal der relevante Code:


Panel p1 = new Panel();

	p1.setLayout(new GridLayout(y+a, x)); // Layoutmanger

		p1.add(new JLabel("Bewertung")); // Überschriften ausgeben	

		p1.add(new JLabel("Vorgang"));

		p1.add(new JLabel("Bearbeiter"));

		p1.add(new JLabel("Fälligkeit"));

		p1.add(new JLabel("Anmerkung"));


JMenuBar menuBar = new JMenuBar(); 

	JMenu fileMenu = new JMenu( "Datei" ); 

		fileMenu.add(new JMenuItem("Datenbank öffnen"));

		fileMenu.add(new JMenuItem("Speichern"));

		fileMenu.add(new JMenuItem("Beenden"));

	menuBar.add( fileMenu ); 

this.setJMenuBar( menuBar );	


this.add(p1);

EDIT: Problem gelöst^^ hab Panel durch JPanel ersetzt, vllt sollte ich mal länger nachdenken ^^

Bearbeitet von ShamaN
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dasselbe Problem hatten wir vor ein paar Tagen hier doch schonmal im Forum, bei demjenige lag das Problem daran, dass er awt und swing Komponenten miteinander vermischt hatte.

Und wenn ich mir dein Code-Ausschnitt anschaue, seh ich da auch wieder nen normales Panel...also awt, wobei dein Menü swing sein soll.

Also entscheide dich, ob du nun awt oder swing verwenden willst, und bleib genau einem von beidem, aber nicht beides vermischen, dass führt öfters mal zu komischen Fehlern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Folgendes neues Problem:

Ich erstelle mit dem Konstruktor ein Frame, darin setze ich TextFelder und Labels in ein JPanel, welches ich als protected in der Klasse deklariert habe:


protected JPanel p1 = new JPanel();


 //Innerhalb des Konstruktors...

p1 = new JPanel();

	p1.setLayout(new GridLayout(y, x));

		p1.add(new JLabel);

Jetzt möchte ich aber durch Klicken eines Buttons neue Textfelder in das Panel einfügen... Da dachte ich mir folgendes...

public void actionPerformed (ActionEvent e) 

	{ 


		if (e.getSource()==newdata) 

		{ 

			for(int i=0; i<4; i++)

			{

				x++;

				Felder.add(new JTextField(""));  

				p1.add((JTextField)Felder.get(Felder.size()));

			}

		} 

	}

Felder ist eine ArrayList.

Problematisch ist noch, dass das GridLayout mit der Anzahl y an Zeilen deklariert wurde.

y wird dem Konstruktor übergeben.

EDIT: Sinn des ganzen ist ein GUI welches mit einer mySql-Datenbank kommuniziert

Bei dem aktuellen Problem möchte ich über den Button "Neuen Datensatz" eine neue Zeile aus Textfeldern erstellen, welche sich in die Datenbank speichern lässt.

Bearbeitet von ShamaN
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wäre es vll dann nicht einfacher die Komponente JTable zu verwenden, als mühsam zu versuchen eine tabellenartige Form in deiner GUI nach zu programmieren?

Ansonsten wenn du das unbedingt so machen willst, dann setzte bei der Inistalisierung deines GridLayouts die Anzahl der Reihen auf 0. Dann fügt er neuhinzugefügte Komponente immer so an, dass die Anzahl der Spalten beibehalten wird, sodass er einfach immer nur neue Reihen hinzufügt.

Wenn du jedoch sowohl Reihen als auch Spalten festlegt, dann wird er immer die Reihen als feste Größe nehmen und, sobald du mehr Komponenten hinzufügst als das Grid eigentlich beherbergen kann, neuen Spalten hinzufügen um die neuen Komponenten einzufügen.

Wird in der Doku des GridLayouts aber auch angesprochen: http://java.sun.com/j2se/1.5.0/docs/api/java/awt/GridLayout.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann werden mir die im ActionListener erstellen Textfelder aber immer noch nicht auf dem Frame angezeigt.

Dieser Code müsste allerdings auch fehlerhaft sein:


public void actionPerformed (ActionEvent e) 

{ 

	if (e.getSource()==newdata) 

	{ 

		for(int i=0; i<4; i++)

		{

			Felder.add(new JTextField(""));  

			p1.add((JTextField)Felder.get(Felder.size()));

		}

	} 

}


Link zu diesem Kommentar
Auf anderen Seiten teilen

So... Nun möchte ich durch Anklicken eines bestimmten Punktes auf meinem myJLabel die Variable


private int bewertung = 1;

in der Klasse myJLabel ändern. Aso hab ich eine Klasse MyMouseListener geschrieben, in welcher ich mit getComponent() das myJLabel haben möchte, was natürlich nicht funktioniert ^^

import java.awt.event.MouseEvent;


public class MyMouseListener

{

	public void mouseClicked (MouseEvent me)

	{

		int x = me.getX();

		int y = me.getY();


		if (me.getButton() == 1) // Reaktion auf den Mausklick 

		{ 

			if((x > 15 && y > 10) && (x < 30 && y < 25))

			{

				me.getComponent().setBewertung(1);

			}

			if((x > 45 && y > 10) && (x < 60 && y < 25))

			{

				me.getComponent().setBewertung(2);

			}

			if((x > 75 && y > 10) && (x < 90 && y < 25))

			{

				me.getComponent().setBewertung(3);

			}

		} 

	}

}

darum habe ich die Methode getComponent in der Klasse myJLabel eingefügt

public myJLabel getComponent()

		{

			return (this);

		}

was natürlich auch nicht funktioniert ;D Außerdem habe ich folgende Zeile im Konstruktor des myJLabel eingefügt:

this.addMouseListener(new MyMouseListener());

welches auch nen Fehler auswirft:
The method addMouseListener(MouseListener) in the type Component is not applicable for the arguments (MyMouseListener)
Eclipse schlägt mir vor die Zeile folgendermaßen zu ändern:

this.addMouseListener((MouseListener) new MyMouseListener());

Sieht für mich aber irgendwie zu einfach aus.

Jemand ne Ahnung was ich falsch mache?

bzw. was ich machen muss um das ganze zum Laufen zu bringen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Yupp, die Fehler lassen sich alle in deinem MouseListener beheben. Fangen wir mal mit dem Fehler an, dass du deinen eigenen MouseListener nicht dem JLabel hinzufügen kannst, das liegt ganz einfach daran, dass du dort nur einen Listener hinzufügen kannst, der das Interface MouseListener implementiert. Das solltest du bei deinem Listener dann also noch machen.

Und zu deinem anderem Problem, ich denke ja mal, dass die Methode setBewertung(int) in deiner Klasse myLabel definiert ist. Dann dürftest du in deinem Listener folgendermaßen auf diese Methode zugreifen können.

((myLabel)me.getComponent()).setBewertung(int);

Die Methode getComponent() des MouseEvent gibt nämlich nur ein Objekt vom Typ Component zurück, das heißt, du kannst dort also auch nur Methoden aufrufen, die einem Component-Objekt bekannt sind. Willst du also Methoden aufrufen deiner Klasse myLabel aufrufen, musst du dieses Component-Objekt erstmal nach myLabel umwandeln und kannst dann auch die Methoden deiner Klasse aufrufen.

Das funktioniert natürlich nur, weil deine Klasse indirekt von Component erbt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

In der Klasse

public class myJLabel extends JLabel
Im Konstruktor

public myJLabel(String text, int bewertung) //Konstruktor

		{

		super.addNotify();

		setText(text);

		this.bewertung = bewertung;

		this.addMouseListener((MouseListener) new MyMouseListener());

		}

bekomme ich jetz eine NullPointerException ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

In der Zeile


this.addMouseListener((MouseListener) new MyMouseListener());

Und...
Fangen wir mal mit dem Fehler an, dass du deinen eigenen MouseListener nicht dem JLabel hinzufügen kannst, das liegt ganz einfach daran, dass du dort nur einen Listener hinzufügen kannst, der das Interface MouseListener implementiert. Das solltest du bei deinem Listener dann also noch machen.
hab ich möglicherweise nicht richtig verstanden.... Mein MyMouseListener sieht jetz so aus:
import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;


public class MyMouseListener extends MouseAdapter implements MouseListener

{

	public void mouseClicked (MouseEvent me)

	{

		int x = me.getX();

		int y = me.getY();


		if (me.getButton() == 1) // Reaktion auf den Mausklick 

		{ 

			if((x > 15 && y > 10) && (x < 30 && y < 25))

			{

				((myJLabel)me.getComponent()).setBewertung(1);

				((myJLabel)me.getComponent()).setVisible(true);

				System.out.println("rot");

			}

			if((x > 45 && y > 10) && (x < 60 && y < 25))

			{

				((myJLabel)me.getComponent()).setBewertung(2);

				((myJLabel)me.getComponent()).setVisible(true);

				System.out.println("gelb");

			}

			if((x > 75 && y > 10) && (x < 90 && y < 25))

			{

				((myJLabel)me.getComponent()).setBewertung(3);

				((myJLabel)me.getComponent()).setVisible(true);

				System.out.println("grün");

			}

		} 

	}

}

MyJLabel

public class myJLabel extends JLabel 

{

	private int bewertung = 1;



		public myJLabel(String text, int bewertung) //Konstruktor

		{

			super.addNotify();

			setText(text);

			this.bewertung = bewertung;

			this.addMouseListener((MouseListener)new MyMouseListener());


		}

							//Methoden

		public myJLabel getComponent()

		{

			return (this);

		}

		public  int getBewertung()

Fehlen noch ein paar unrelevante Zeilen Code

EDIT: Irgendwo muss ich auch nochmal meinen Frame aktualisieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn dein MyMouseListener von MouseAdapter erbt brauchste das Interface MouseListener nicht mehr implementieren, das geschieht schon im MouseAdapter.

Dadurch, dass MyMouseListener nun indirekt das Interface MouseListener implementiert, kannste in deinem Konstruktor jetzt auch einfach folgendes schreiben:

this.addMouseListener(new MyMouseListener());

Dann kannste die getComponent() Methode aus deiner Klasse MyLabel wieder löschen, solange du die gerade nich anderweitig gebrauchst.

Und seh ich das richtig, du hast in deiner Klasse MyLabel keine Methode setBewertung(int)?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die NullPointer Exception ist immer noch da:

Exception in thread "main" java.lang.NullPointerException

at java.awt.Component.addMouseListener(Unknown Source)

at asdf.myJLabel.<init>(myJLabel.java:20)

Sieht für mich so aus als könne man keinen MouseListener an ein Component, in diesem Fall Label, anhängen

Zeile 20 ist


this.addMouseListener(new MyMouseListener());

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...