Swing Beziehungen zwischen 3 Klassen

Pacman92

Mitglied
Hallo,

ich habe 3 Klassen:

Die Klasse 1 ist meine Start-Klasse
Java:
Klasse1 {

static void main()
{
Klasse2 menue = new Klasse2()
menue.anzeigen
Thread t1 = new Thread(new Klass3());
t1.start();	
}
}

Klasse2 macht das Menü:

Klasse2 {
void anzeigen() {
..zeichnen der einzelnen Komponenten unter anderen eine Liste
}

Klasse3{
void run() {
hier will ich einen Eintrag in die Liste machen ...
}
} }

Ich bekomm also in dem separten Thread Daten die ich in das Menü eintragen will. Habe ich da einen Denkfehler drinne oder geht das gar nicht? Bzw. wenn es geht, wie mache ich es dann am besten.

Schonmal danke für eure Hilfe
 

Quaxli

Top Contributor
Die erste Klasse brauchst Du schon mal gar nicht, wenn die nur die main-Methode enthält.

Was das Bekanntmachen der beiden anderen Klassen zueinander betrifft, geht das schon. Am einfachsten als Referenz, d. h. daß z. B. Klasse3 eine Instanzvariable in Klasse2 ist. Da Du alles nur sehr rudimentär hingeschrieben hast, will ich da keine pauschale Empfehlung abgeben.

Grob skizziert könnte das so aussehen:

Java:
public class Klasse2 implements Runnable{

  Klasse3 ref;

  public static void main(...){
    new Klasse2();
  }

  public Klasse2(){
    ref = new Klasse3();
   Thread th = new Thread(this);
    th.start();
    ....
  }

  public void machWasMitKlasse3(){
     ref.hierPassiertWas();

  }
}
 

Pacman92

Mitglied
Hallo,

danke für deine Antwort, ich hänge dir mal meine 3 Klasse an, ich hoffe dadruch wird logischer was ich mir gedacht habe:

Java:
public class Hauptmenue {
	public static void main(String[] args) {
		//Zeichnen des Hauptmenues		
		ZeichneHauptmenue hauptmenue = new ZeichneHauptmenue();
		hauptmenue.zeichnen();
		hauptmenue.anzeigen(true);
		//Definieren des SystemTray Icons
		hauptmenue.tray();
		Thread t1 = new Thread(new ClientConnect());
		t1.start();		
	}
}

Java:
public class ZeichneHauptmenue {
//Definieren der Elemente
private JButton schliesen, nachricht;
private JWindow window;
private DefaultListModel nutzer;
private JList liste;

	public void zeichnen()
	{
		//Definieren der Variablen
		final Icon icon1 = new ImageIcon(ZeichneHauptmenue.class.getResource("images/delete.gif"));
		// Window erstellen
		window = new JWindow();
		window.setLayout(new FlowLayout());
		//frame.setBounds(java.awt.Toolkit.getDefaultToolkit().getScreenSize().width - 150, java.awt.Toolkit.getDefaultToolkit().getScreenSize().height -30, 150, java.awt.Toolkit.getDefaultToolkit().getScreenSize().height - 30);
		window.setBounds(java.awt.Toolkit.getDefaultToolkit().getScreenSize().width - 150, 40, 150, GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height - 40);
		window.setAlwaysOnTop(true);
		//Tabellenlayout erzeugen
	    double border = 5;
	    double size[][] =
	        {{border, TableLayout.FILL, 20, border},  // Spalten
	         {border, 20, TableLayout.FILL, 20, border}}; // Reihen
		Container container = window.getContentPane();
		container.setLayout(new TableLayout(size));

		//Einfügen der Elemente
		schliesen = new JButton();
		schliesen.setIcon(icon1);
		schliesen.addActionListener(new schliesen_klick());
		container.add(schliesen, "2,1");
		
		nachricht = new JButton("Text");
		nachricht.setVisible(false);
		container.add(nachricht, "1,3,2,3");
		
		nutzer = new DefaultListModel();
		liste = new JList(nutzer);
		liste.setBorder(BorderFactory.createLineBorder(Color.black));
		container.add(liste, "1,2,2,2");
			
	}

	public void anzeigen(Boolean status) {
		window.setVisible(status);	
	}
	

	public void tray() {
		Image image = Toolkit.getDefaultToolkit().getImage(ZeichneHauptmenue.class.getResource( "images/raupe.gif") );
		PopupMenu popup = new PopupMenu();
		MenuItem beenden = new MenuItem( "Ende" );
		
		beenden.addActionListener( new ActionListener()
		{public void actionPerformed( ActionEvent e )
		{System.exit( 0 );} } );
		popup.add(beenden);
		
		
		TrayIcon trayIcon = new TrayIcon( image, "BBNotify", popup );
		trayIcon.setImageAutoSize( true );
		SystemTray tray = SystemTray.getSystemTray();
		try {
			tray.add( trayIcon );
		} catch (AWTException e1) {}
	}
	
	public void insert_daten(String daten)
	{
		nutzer.addElement(daten);
	}	

	private class schliesen_klick implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			window.setVisible(false);
		}		
	}
	
	
	
}

Java:
public class ClientConnect implements Runnable {

	/**
	 * Ausführende Methode
	 */
	@Override
	public void run() {
		try {
		Socket server = new Socket( "localhost", 3141 );
		 Scanner in  = new Scanner( server.getInputStream() );
		 PrintWriter out = new PrintWriter( server.getOutputStream(), true );
		 out.println( "Hallo" );

		 
		} catch(Exception e) {
			System.out.println("error");
		}
		
		
	}
	
	
	

}

In der 3. Klasse will ich jetzt einen Eintrag in die Liste machen.

Habe ich das ganze Konzept falsch verstanden?
 

Murray

Top Contributor
Dann müsste ClientConnect - z.B. im Konstruktor - eine Referenz auf die Liste oder auf die Instanz von ZeichneHauptmenue (wo dann noch ein Getter für die Liste hinzukommen müsste) bekommen.

Schöne wäre aber wohl, das weniger eng zu verkoppeln und ein neues Interface einzuführen:
Java:
interface ItemList {
  public void addItem( String whatever);
}

Jetzt müsste ClientConnect nur dieses Interface kennen und z.B. im Konstruktor ein Objekt übergeben bekommen, welches dieses Inetrface implementiert.

ZeichneHauptmenue müsste dann lediglich dieses Interface implementieren.


<OT>Die Benamung deiner Klassen solltest du noch mal überdenken</OT>
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
U 2dgraphics unterschied zwischen .scale und AffineTransform.getScaleInstance AWT, Swing, JavaFX & SWT 4
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
T JavaFX - Datenübergabe zwischen Scenes AWT, Swing, JavaFX & SWT 8
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Arif AWT Unterschied zwischen RED und red AWT, Swing, JavaFX & SWT 4
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
S Verzögerung zwischen Cursorbewegung einbauen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
S Unterschied zwischen id und fx:id AWT, Swing, JavaFX & SWT 5
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
B Linie zwischen 2 Elementen AWT, Swing, JavaFX & SWT 5
D animierte kameraansicht zwischen gezeichneten objekten AWT, Swing, JavaFX & SWT 4
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
GUI-Programmer JWindow zwischen den Desktopbild und Dektopverknüpfungen AWT, Swing, JavaFX & SWT 16
Psypsy Swing SwingWorker unterschied zwischen setProgress und process AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
H Swing Wechsel zwischen Frames AWT, Swing, JavaFX & SWT 6
S Swing Zwischenräume zwischen JPanels AWT, Swing, JavaFX & SWT 4
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
G Swing MigLayout: Lücken zwischen Elementen entfernen AWT, Swing, JavaFX & SWT 2
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
V Swing JLabel zwischen 2 JPanel hin- und herbewegen. AWT, Swing, JavaFX & SWT 12
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
buntuswalus Swing Datentransfer zwischen JPanels AWT, Swing, JavaFX & SWT 18
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
S Schnittstelle zwischen Haupt und Nebenfenster AWT, Swing, JavaFX & SWT 17
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
F JCombobox zwischen setEditable true und false switchen AWT, Swing, JavaFX & SWT 2
I Swing JPanel Tab zwischen GUI Elementen AWT, Swing, JavaFX & SWT 6
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
data89 Verbindungslinien zwischen Formen auf einer "Zeichenfläche" AWT, Swing, JavaFX & SWT 2
DeeDee0815 SWT Text Widget: Zwischen Single und Password umschalten AWT, Swing, JavaFX & SWT 3
J Unterschied zwischen SwingWorker und Threads AWT, Swing, JavaFX & SWT 4
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
S Abstand zwischen Labeln auf 0 setzen AWT, Swing, JavaFX & SWT 6
J Unterschied zwischen nicht-statischen und statischen Klassen AWT, Swing, JavaFX & SWT 5
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
O Zwischen mehreren Bildern wechseln AWT, Swing, JavaFX & SWT 6
T JTextField, der nur Werte zwischen 100 und 1000 zulässt AWT, Swing, JavaFX & SWT 28
M Linie zwischen JComponents AWT, Swing, JavaFX & SWT 5
G Abstand zwischen den Buttons in einer Toolbar AWT, Swing, JavaFX & SWT 3
G Drag&Drop zwischen JTables AWT, Swing, JavaFX & SWT 2
P Unterscheiden zwischen Mautasten-Druck? AWT, Swing, JavaFX & SWT 3
B Abstand zwischen einzelnen Elementen einstellen AWT, Swing, JavaFX & SWT 2
I Drag and Drop zwischen zwei JTables AWT, Swing, JavaFX & SWT 5
N JTable Abstand zwischen einzelnen Spalten AWT, Swing, JavaFX & SWT 6
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
M Unterschied zwischen paintComponent() und paint()? AWT, Swing, JavaFX & SWT 4
R Navigieren zwischen mehreren Fenstern AWT, Swing, JavaFX & SWT 7
F Wie gebe ich Parameter zwischen Actions weiter? AWT, Swing, JavaFX & SWT 2
K abstände zwischen Panels? AWT, Swing, JavaFX & SWT 3
M Freiraum zwischen Knoten im JTree AWT, Swing, JavaFX & SWT 14
M Parameterübergabe zwischen Frames AWT, Swing, JavaFX & SWT 2
P in JFrame zwischen verschiedenen JPanels wechseln AWT, Swing, JavaFX & SWT 7
M Breite veraendern zwischen 2 JPanels AWT, Swing, JavaFX & SWT 2
J Separator zwischen den einzelnen Symbolen in der Toolbar AWT, Swing, JavaFX & SWT 4
A Button zwischen zwei Panels verschieben. AWT, Swing, JavaFX & SWT 6
G abstand zwischen den buttons unterschiedlich AWT, Swing, JavaFX & SWT 2
S Wechsel zwischen JFrame und JDialog durch Benutzerauswahl AWT, Swing, JavaFX & SWT 2
Z komponenten "einfrieren" - abstand zwischen AWT, Swing, JavaFX & SWT 10
G Ungewollter Abstand zwischen Gui -Elementen / Insets setzen AWT, Swing, JavaFX & SWT 2
G BoxLayout: Abstand zwischen vertikalen Komponenten! AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben