Chatprogramm: mehrere Klassen

Status
Nicht offen für weitere Antworten.

Gayson

Bekanntes Mitglied
Hallo!
Wie einige bereits wissen, programmiere ich ein Chatprogramm für ein Heimnetzwerk. Der "Hauptcode" steht, möchte jetzt ein bisschen Feintuning vornehmen, um auch meine bis jetzt sehr geringen Java-Kenntnisse aufzubessern.


Bis jetzt besteht das alles aus einer Klasse, bis jetzt auch "nur eine Oberfläche". Ich möchte jedoch eine weitere Oberfläche programmieren, bei der man Einstellungen vornehmen kann (wie z.B. Usernamen ändern). Durch klick auf einen Button in dem Hauptfenster soll ein Einstellungen-Fenster aufgehen.

Dazu habe ich folgende Fragen:

1. Wenn das Einstellungen-Frame geschlossen wird, sollen Variablen (wie z.B. String username = "Gayson") an die Hauptklasse (Hauptfenster) übermittelt werden. Gibt es dafür eine Möglichkeit?
Meine Idee dazu war, dass beim Schließen des Einstellungen-Frames die Einstellungen in einer externen Datei abgespeichert werden. Dann soll im Hauptfenster die Variablen aus der Datei ausgelesen werden. Wenn dies eine varinate ist, wie speicher ich die verschiedenen Einstellungen ab? Für jede Einstellung eine eigene Datei? (Filewriter usw. sind mir bekannt, dass kreieren einer Textdatei also kein Problem)

2. Wenn der Einstellungen-Button gedrückt wird, öffnet sich das Einstellungen-Fenster, das Hauptfenster, bleibt jedoch "aktiv", d.h. man kann weiterchatten, obwohl das Einstellungen-Fenster offen ist. Wie kann ich das Hauptfenster nicht anklickbar machen?

Ich würde mich auf eine Antwort riesig freuen!
 
B

bygones

Gast
1. versteh ich nicht ganz: Warum speicherst du die Infos nicht in einem Objekt ab und übergibst das Objekt einfach dem Hauptfenster ? Oder sollen die dann persistent gespeichert werden ?

2. Nimm einen JDialog und mach den modal - dann läuft sonst erstmal nix außer dem dialog
 

Gayson

Bekanntes Mitglied
Das mit dem JDialog ist ne gute Idee, habs mir zumindest gerade auf der Sun-Hp durchgelesen, hört sich gut an.

versteh ich nicht ganz: Warum speicherst du die Infos nicht in einem Objekt ab und übergibst das Objekt einfach dem Hauptfenster ? Oder sollen die dann persistent gespeichert werden ?

Kannst du mir mal erklären, wie das geht? Können wir mal annehmen, dass ich die Variable username="Gayson" und targetip="192.168.0.10" von dem Einstellungen-Frame an den Haupt-Frame übergeben will?
Also: Wie packe die die beiden in ein Objekt, sende das ans Hauptfenster und packe es wieder aus?

Schon mal vielen Dank!
 
B

Beni

Gast
Du machst so eine Einstellungen-Klasse. Also dbc meint wahrscheinlich sowas:

Code:
public class Preferences{
  private String nick;
  private String ip;
  [...]

  public void setNick( String nick ){
    this.nick = nick;
  }

  public String getNick(){
    return nick;
  }
}

Und dann kannst du bei deinem Dialog noch eine Methode "getPreferences" machen. Oder bei dem Hauptfenster eine Methode "setPreferences"... gibt viele verschiedene Möglichkeiten.

mfg Beni
 

Gayson

Bekanntes Mitglied
Und dann kannst du bei deinem Dialog noch eine Methode "getPreferences" machen. Oder bei dem Hauptfenster eine Methode "setPreferences"... gibt viele verschiedene Möglichkeiten.

Und wie mach ich das? Steh grad irgendwie total auf dem Holzfuß...
 
B

Beni

Gast
Im Hauptfenster:

Code:
public class MainFrame extends JFrame{
  public void showPreferences(){
    Prefernces myPrefs = new Preferences( ... );

    preferenceDialog.show( myPrefs );

    Preferences newPrefs = preferenceDialog.getPreferences();
    ...
  }
}

Und im Einstellungendialog:
Code:
public class PreferenceDialog extends JDialog{
  public void show( Preferences prefs ){
    textField.setText( prefs.getNick() );  // textfield ist das Textfeld, das den Nick anzeigt.
    ...
    setVisible( true );
  }

  public Preferences getPreferences(){
    Preferences prefs = new Preferences(),
    prefs.setNick( textField.getText() );
    ...
    return prefs;
  }
}
 

Gayson

Bekanntes Mitglied
Was ich nur brauche, ist, das man vom Hauptfenster die gesetzten Einstellungen im Eigenschaften-Fenster auslesen kann.
ich glaub, ich muss mein Buch nochmal lesen, dass mit den Klassen kapier ich noch nicht wirklich....

Hier der Code, den ich bis jetzt habe, der Kompiler sagt natürlich zu "Preferences""cannot resolve symbol", was ja auch klar ist, die ist ja nirgendwo definiert worden....

Code:
public class Settings extends JDialog{
	String nick;
	JTextField usernamefield = new JTextField();


    public Settings() {
		setModal(true); //Hauptfenster wird nicht bearbeitbar
        setSize(300, 500);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    }

  	public void setNick( String nick ){
    	this.nick = nick;
   	}

  	public Preferences getPreferences(){
    	Preferences prefs = new Preferences();
    	prefs.setNick(usernamefield.getText());
    	return prefs;
	}
}
 

Gayson

Bekanntes Mitglied
Habs mal versucht, für mich ein wenig zu vereinfachen.
Warum klappt folgendes nicht:

Hauptfenster:

Code:
				Settings settingswindows = new Settings();
				System.out.print(Settings.prefs[0]);

Eigentschaften-Fenster:

Code:
public class Settings extends JDialog{
	String[] prefs;

    public Settings() {
		setModal(true); //Hauptfenster wird nicht bearbeitbar
        setSize(300, 500);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

		pack();
        setVisible(true);

    	prefs[0]="Hallo";

    }


}
 

KSG9|sebastian

Top Contributor
also, zuerst mal in worten erklärt:

Du hast ein Objekt, dass als Typ dein Einstellungsfenster hat, nenne wir es mal lnkEinstellungsFenster.
In diesem Objekt werden Eigenschaften gespeichert, von mir aus folgende:

Code:
String name="test";
String hintergrundFarbe = "#00ff00";
String vordergrundFarbe = "#ff0000";

So, jetzt willst du das Einstellungsfenster schließen, also kommt folgender Aufruf in der ChatKlasse:

Code:
public void closeSettingsWindow(){
    lnkEinstellungsFenster.dispose();
}

Wenn dass passiert, dann sind ja die eingegebenen Daten weg. Um dass zu ändern machst du folgendes:

In der Klasse EinstellungsFenster machst du folgende Methode:

Code:
public EinstellungsFenster getSettings(){
    return this;
}

Erklärung: Mit this bekommst du die Referenz auf das Objekt, dass du ansprichst. So gehen dir die Daten nicht verloren.

Deine Methode in der Chatklasse sieht dann so aus:

Code:
public void closeSettingsWindow(){
    EinstellungsFenster lnkSettings = lnkEinstellungsFenster.getSettings();
    lnkEinstellungsFenster.dispose();
    
    //Jetzt kommen Zugriffe auf die Settings:
    System.out.println(lnkSettings.getName());
    .   
    .
    .
}

Ich hoffe mal dass du es so verstehst :)
 

Gayson

Bekanntes Mitglied
Aha, jetzt hab ichs! Danke!

Nun hat mich mein Ehrgreiz gepackt, ich möchte noch die andere von mir erwähnte Möglichkeit ausproberien, und zwar die Einstellungen abspeichern zu können, sodass beim nächstenProgrammstart z.B. der Benutzername erhelten bleibt. Wie könnte man das machen?
 

L-ectron-X

Gesperrter Benutzer
Am einfachsten wäre es, die Objekte zu serialisieren. Dazu schaust Du Dir mal die Klassen java.io_ObjectOutputStream und java.io.FileOutputStream an. Ich glaube hier im Forum gibt es auch schon Beiträge zur Objekt-Serialisierung.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
iJava Chatprogramm mit GUI Java Basics - Anfänger-Themen 6
U Netzwerk Chatprogramm Quellcode funktioniert nicht Java Basics - Anfänger-Themen 6
G Problem mit Chatprogramm Java Basics - Anfänger-Themen 10
B Chatprogramm Java Basics - Anfänger-Themen 20
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
Buroto Klassen Mehrere .txt Datein verbienden und anschließend auslisten Java Basics - Anfänger-Themen 10
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
D mehrere Berechnungen in einer Methode Java Basics - Anfänger-Themen 9
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
M mehrere Rückgabenwerte aus Methode Java Basics - Anfänger-Themen 7
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
Ich lerne Java. Methoden Mehrere Methoden mit Punkt Java Basics - Anfänger-Themen 45
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
B Methoden Mehrere ähnliche Methoden zusammenfassen Java Basics - Anfänger-Themen 24
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
C Mehrere Zufallswerte Java Basics - Anfänger-Themen 4
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
E Mehrere Arrays addieren mit Übertrag Java Basics - Anfänger-Themen 13
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
J Mehrere paintComponenten in einem Programm Java Basics - Anfänger-Themen 0
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
B Jeweils den Parent bekommen -> mehrere Ebenen Java Basics - Anfänger-Themen 2
javajoshi mehrere Threads: Methoden zentral unterbringen Java Basics - Anfänger-Themen 8
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
L Mehrere Jars im Unterordner Java Basics - Anfänger-Themen 2
L LibGDX - mehrere Screens Java Basics - Anfänger-Themen 1
J Sudoku mehrere Lösungen Java Basics - Anfänger-Themen 29
F Mehrere Instanzen der Klasse A EINER Instanz der Klasse B übergeben Java Basics - Anfänger-Themen 3
T Mehrere JFrames gleichzeitig öffnen Java Basics - Anfänger-Themen 6
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
S mehrere If Bedingungen Java Basics - Anfänger-Themen 5
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
B Mehrere Zahlen speichern Java Basics - Anfänger-Themen 60
M mehrere extends? Java Basics - Anfänger-Themen 19
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
C ButtonController löst mehrere Methoden aus Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
B Timer mehrere Male ausführen Java Basics - Anfänger-Themen 4
kilopack15 Mehrere Threads in einer Klasse Java Basics - Anfänger-Themen 8
F mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren Java Basics - Anfänger-Themen 18
F Mehrere Konstruktoren? Wofür? Java Basics - Anfänger-Themen 21
J Mehrere Eingabefelder programmiert (Zeigt Fehler an) Java Basics - Anfänger-Themen 6
Jinnai4 Mehrere Textfelder überprüfen Java Basics - Anfänger-Themen 16
N Mehrere Forms auf einem Panel Java Basics - Anfänger-Themen 6
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
D Mehrere Objekte in ein Objekt zusammenfassen Java Basics - Anfänger-Themen 16
D Input/Output Mehrere Befehle nacheinander ausführen Java Basics - Anfänger-Themen 20
K Mehrere Objekte anlegen Java Basics - Anfänger-Themen 23
N Integers aus Textdatei auslesen und mehrere Arrays erstellen Java Basics - Anfänger-Themen 9
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
I Klassen Mehrere Java Klassen in einer .java Datei Java Basics - Anfänger-Themen 7
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
F Mehrere Konstruktoren Java Basics - Anfänger-Themen 10
A Mehrere Radiobuttons Java Basics - Anfänger-Themen 3
B Klassen Mehrere Objekte mit Schleife erstellen - How? Java Basics - Anfänger-Themen 1
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2
V OOP Aufnahme von Dreiecken in ein/mehrere Objekte Java Basics - Anfänger-Themen 0
Q OOP Mehrere Instanzen auf ein Feld Java Basics - Anfänger-Themen 13
C Klasse auf mehrere Objekte zugreifen lassen Java Basics - Anfänger-Themen 26
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
K Mehrere String.valueOf() kürzer schreiben / "packen"? Java Basics - Anfänger-Themen 2
F String mehrere male ausgeben? Java Basics - Anfänger-Themen 4
H wie mehrere variablen in einfacher for-schleife? Java Basics - Anfänger-Themen 2
H möglichkeiten für for-schleife? (mehrere ausgangsvariablen?) Java Basics - Anfänger-Themen 9
M PdfBox - mehrere Formularseiten Java Basics - Anfänger-Themen 2
Z Mehrere XML-Dateien zu einer zusammenfügen Java Basics - Anfänger-Themen 3
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
F Methoden split() - Mehrere Zeichen Java Basics - Anfänger-Themen 5
F Erste Schritte Mehrere nextInt() Eingaben nebeneinander ausgeben Java Basics - Anfänger-Themen 12
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
T Compiler-Fehler Mit Array und "for" mehrere ImageIcon erstellen Java Basics - Anfänger-Themen 7
N Mehrere berechnungen auf einem Button legen? Java Basics - Anfänger-Themen 19
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben