Swing Chatfenster

Zel2491

Aktives Mitglied
Nabend allerseits :)

Ich muss für meinen Java-Kurs ein netzwerkfähiges Chatprogramm schreiben - gibt es tausend Anleitungen zu, ja.
Aaaaaber ich will was ganz anderes:

Hier geht es mir vor allem um 2-3 Feinheiten bei der GUI-Programmierung.

1. Wie kann ich einstellen, dass in ein JTextArea zwar reingeklickt werden kann, um z.B. Text zu markieren und dann zu kopieren, aber, dass in dieses JTextArea nicht hineingeschrieben werden kann? - manuell jedenfalls, wie z.B. bei ICQ.

2. Als Anhang habe ich ein Screenshot von einem Beispielclient hochgeladen, meiner muss zwar nicht so aussehen, aber ich will mich dadran jedenfalls orientieren.

Meine Frage hierzu ist jetzt: was genau ist die "Trennlinie" zwischen dem oberen und unteren JTextArea?
Wenn ihr den Screenshot anguckt und dann mit meinem aktuellen GUI vergleicht wird euch das auffallen ;)


und 3. und letztens:

Rechts will ich ein JTextArea haben, welches vertikal verläuft, in welchem die aktuellen Chatteilnehmer zu sehen sind. Allerdings krieg ich das mit der Positionierung nicht so hin. Bei mir sieht das eher aus wie... es passt einfach überhaupt nicht^^

Ich bin für jeden Tip dankbar :)

Ich poste euch einfach mal meinen Quelltext mit, falls ihr euch den angucken wollt^^

Lg Zel :)

Java:
package gui;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * Klasse: Die Klasse UserInterfaceClient stellt das GUI, bzw. das Interface
 * fuer den Client dar, in welchem dieser dann das Chatprogramm zu sehen
 * bekommt.
 */
public class UserInterfaceClient extends JFrame {

    /**
     * Attribut: Eine statische, unveraenderbare Variable des Typs long wird
     * deklariert und initialisiert.
     */

    private static final long serialVersionUID = -9142707690379587523L;

    /**
     * Attribut: Ein JButton wird deklariert und initialisiert, mit welchem
     * spaeter der eingegebene Text abgeschickt wird.
     */

    private JButton send = new JButton("Senden");

    /**
     * Attribut: Ein JTextField wird deklariert und initialisiert, in welchem
     * spaeter der Text eingegeben wird, welchen der Benutzer an seinen
     * Chatpartner uebermitteln mšchte.
     */

    private JTextField in = new JTextField(10);

    /**
     * Attribut: Ein JTextArea wird deklariert und initialisiert, in welchem
     * spaeter der geschriebene und gesendete Text angezeigt wird.
     */

    private JTextArea out = new JTextArea(15, 20);

    /**
     * Attribut: Ein JTextArea wird deklariert und initialisiert, in welchem die
     * am Chat teilnehmenden Benutzer angezeigt werden.
     */

    // private JTextArea user = new JTextArea(15, 5);

    private JLabel name = new JLabel("Nickname: ");

    private JTextField username = new JTextField(10);

    private JPanel north = new JPanel();

    private JMenuBar menue = new JMenuBar();

    private JMenu datei = new JMenu("Datei");
    
    private JMenuItem exit = new JMenuItem("Beenden");

    /**
     * Methode: In dieser Methode wird das GUI erstellt, in welchem spaeter der
     * Benutzer das Chatprogramm zu sehen bekommt.
     */

    public UserInterfaceClient() {
        super("Cool Version 1.0");
        actionHandler();

        this.setLayout(new FlowLayout());
        this.setSize(300, 400);
        this.setLocation(300, 250);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Modifizieren

        out.setFocusable(false);

        north.add(name);
        north.add(username);

        menue.add(datei);
        datei.add(new JSeparator());
        datei.add(exit);
        this.setJMenuBar(menue);

        // Hinzufuegen der Attribute zum Frame
        this.add(north);
        this.add(out);
        this.add(in);
        this.add(send);

    }

}
 

Anhänge

  • Client_Bsp.png
    Client_Bsp.png
    39,8 KB · Aufrufe: 77
  • MeinClient_Bsp.png
    MeinClient_Bsp.png
    25,2 KB · Aufrufe: 66
Zuletzt bearbeitet:

Wildcard

Top Contributor
1. Wie kann ich einstellen, dass in ein JTextArea zwar reingeklickt werden kann, um z.B. Text zu markieren und dann zu kopieren, aber, dass in dieses JTextArea nicht hineingeschrieben werden kann? - manuell jedenfalls, wie z.B. bei ICQ.
Java:
textArea.setEditable(false);

2. was genau ist die "Trennlinie" zwischen dem oberen und unteren JTextArea?
JSplitPane

3. Rechts will ich ein JTextArea haben, welches vertikal verläuft, in welchem die aktuellen Chatteilnehmer zu sehen sind. Allerdings krieg ich das mit der Positionierung nicht so hin. Bei mir sieht das eher aus wie... es passt einfach überhaupt nicht^^

Das war keine Frage ;)
 

Zel2491

Aktives Mitglied
Für 1. und 2. schonmal vielen Dank :)


Für 3. stimmt, hast Recht xD

aaaalso:

3.

Wie bekomme ich das JTextArea ungefähr so platziert, wie es in dem Beispiel-Screenshot zu sehen ist? :)


Gruß Zel :)
 

Wildcard

Top Contributor
Am einfachsten ein Borderlayout verwenden. Center ist die SplitPane mit den beiden JTextAreas, East ist das andere Widget.
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben