Swing Text aus JTextField einer anderen Klasse

Zel2491

Aktives Mitglied
Aloha allerseits ;)

Ich habe ein Problem bezüglich eines JTextFields...

Ich will den Text aus dem JTextField herauslesen und weiterverwenden - klingt einfach, ist es für mich aber nicht :p

Normalerweise mache ich das ja mit
Java:
JTextField.getText();

Jetzt ist aber mein Problem, dass mein JTextField in einer anderen Klasse ist...
Ich habe es mit einem getter probiert, das klappt aber auch nicht wirklich:

Java:
 public JTextField getUsertxt() {
        return usertxt;
    }

und hier rufe ich es eigentlich auf:

Java:
out.setText(out.getText() + andereKlasse.getUserTxt() +  in.getText() + "\n");
                    in.setText("");

Das funktioniert aber nicht...

Hat jemand eine Idee, wie das klappen könnte?

Gruß Zel ;)
 

pl4gu33

Top Contributor
du lieferst hier mit

Java:
andereKlasse.getUserTxt()

das JTextField zurück .... nicht einen String

entweder dann so :

Java:
public String getUsertxt() {
        return usertxt.getText();
 }

oder

Java:
out.setText(out.getText() + andereKlasse.getUserTxt().getText() +  in.getText() + "\n");
                    in.setText("");
 

Zel2491

Aktives Mitglied
Habe jetzt meinen Setter geändert, allerdings funktioniert es immer noch nicht :(

wenn ich das alles so mache, habe ich:

Java:
public String getUsertxt() {
        return usertxt.getText();
    }

und dann halt:

Java:
out.setText(out.getText() + andereKlasse.getUsertxt().getText() + in.getText() + "\n");

"Cannot make a static reference to the non-static Method getUsertxt() from the Type andereKlasse"

Dabei hab ich nirgendwo static...

Java:
private void actionHandler()
- hier will ich den Text hinbekommen,

und hier
Java:
 public String getUsertxt() {
        return usertxt.getText();
    }
kommt er her...^^
 

pl4gu33

Top Contributor
entweder du gibst nen String zurück oder machst
Java:
out.setText(out.getText() + andereKlasse.getUsertxt().getText() + in.getText() + "\n");
beides nicht :D :D


wenn du das mit dem String machst dann nur:

Java:
out.setText(out.getText() + andereKlasse.getUsertxt() + in.getText() + "\n");
 

Zel2491

Aktives Mitglied
Ok^^ :D

Klappt trotzdem nicht^^

Wenn ich
Java:
out.setText(out.getText() + andereKlasse.getUsertxt() + in.getText() + "\n");

mache, kommt wieder die selbe Meldung, von wegen static undso^^
 

Zel2491

Aktives Mitglied
Klar


hier ist der Part, in den der Text kommen soll:

Java:
private void actionHandler() {

        send.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                /*
                 * Noch falscher Ansatz. Hier muss man den Text an den Server
                 * uebermitteln. Der Server uebermittelt dann den Text wieder an
                 * den Client. Vorerst lasse ich das noch ueber die getText()
                 * und setText() Methoden, bis ich die Netzwerkprogrammierung
                 * vollkommen verstanden habe
                 */

                if (!in.getText().isEmpty()) {

                    out.setText(out.getText()+ in.getText() + "\n");
                    in.setText("");
                } else {
                    JOptionPane.showMessageDialog(in, "Text eingeben!");
                }

            }
        });


hier die andere Klasse:

der getter befindet sich in Zeile 80, war mir aber nicht ganz sicher, was alles an Code relevant ist...

Java:
package gui;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class StartingFrame extends JFrame {

    private static final long serialVersionUID = -687330130050065776L;

    private JLabel username = new JLabel("Enter Nickname:");

    private JTextField usertxt = new JTextField(10);

    private JLabel ipAdress = new JLabel("Enter IP:");

    private JTextField ipAdresstxt = new JTextField(10);

    private JButton accept = new JButton("OK");

    private JPanel center = new JPanel();

    private JPanel south = new JPanel();

    private boolean show;

    public StartingFrame() {

        super("Cool Version 1.0 Starting Frame");
        actionHandler();

        this.setLayout(new BorderLayout());
        this.setSize(200, 200);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        center.setLayout(new GridLayout(2, 2));

        center.add(username);
        center.add(usertxt);
        center.add(ipAdress);
        center.add(ipAdresstxt);

        south.add(accept);

        this.add(center);
        this.add(BorderLayout.SOUTH, south);

        this.pack();
        show = true;
        this.setVisible(show);
    }

    private void actionHandler() {

        accept.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                setVisible(false);
                new UserInterfaceClient().setVisible(true);

            }
        });

        usertxt.addKeyListener(new MyKeyListener());
        ipAdresstxt.addKeyListener(new MyKeyListener());

    }

    public String getUsertxt() {
        return usertxt.getText();
    }
 

Zel2491

Aktives Mitglied
klar...ist aber etwas länger :p :

Java:
package gui;

import java.awt.FlowLayout;
import java.awt.GridLayout;

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

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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;

/**
 * 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 moechte.
     */

    private JTextArea in = new JTextArea(3, 20);

    /**
     * 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();

    private JMenu settings = new JMenu("Einstellungen");

    private JMenuItem font = new JMenuItem("Schrift");

    private JMenu autoscroll = new JMenu("Autoscroll ein/aus");

    private JMenuItem ein = new JMenuItem("Ein");

    private JMenuItem aus = new JMenuItem("Aus");

    private JMenuBar menue = new JMenuBar();

    private JMenu datei = new JMenu("Datei");

    private JMenuItem saveChronic = new JMenuItem("Verlauf speichern");

    private JMenuItem exit = new JMenuItem("Beenden");

    private JScrollPane outscrollpane = new JScrollPane(out);

    private JScrollPane inscrollpane = new JScrollPane(in);

    private JLabel loggedAs = new JLabel("Angemeldet als: ");

    private JLabel logged = new JLabel("Kommt noch!");

    private JLabel ipServer = new JLabel("IP des Servers: ");

    private JLabel ip = new JLabel("Kommt noch!");

    private JPanel data = new JPanel();

    /**
     * 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, 450);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        out.setEditable(false);

        outscrollpane
            .setVerticalScrollBarPolicy(ScrollPaneConstants
                .VERTICAL_SCROLLBAR_ALWAYS);

        outscrollpane
            .setHorizontalScrollBarPolicy(ScrollPaneConstants
                .HORIZONTAL_SCROLLBAR_NEVER);

        inscrollpane
            .setVerticalScrollBarPolicy(ScrollPaneConstants
                .VERTICAL_SCROLLBAR_ALWAYS);

        inscrollpane
            .setHorizontalScrollBarPolicy(ScrollPaneConstants
                .HORIZONTAL_SCROLLBAR_NEVER);

        out.setLineWrap(true);
        in.setLineWrap(true);

        data.setLayout(new GridLayout(2, 2));

        menue.add(datei);
        datei.add(saveChronic);
        datei.add(new JSeparator());
        datei.add(exit);

        menue.add(settings);
        settings.add(font);
        settings.add(autoscroll);
        autoscroll.add(ein);
        autoscroll.add(aus);

        this.setJMenuBar(menue);

        // Hinzufuegen der Attribute zum Frame

        data.add(loggedAs);
        data.add(logged);
        data.add(ipServer);
        data.add(ip);
        this.add(data);
        this.add(outscrollpane);
        this.add(inscrollpane);
        this.add(send);

    }

    /**
     * Methode: Diese Methode implementiert den ActionListener fuer den JButton.
     */

    private void actionHandler() {

        send.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                /*
                 * Noch falscher Ansatz. Hier muss man den Text an den Server
                 * uebermitteln. Der Server uebermittelt dann den Text wieder an
                 * den Client. Vorerst lasse ich das noch ueber die getText()
                 * und setText() Methoden, bis ich die Netzwerkprogrammierung
                 * vollkommen verstanden habe
                 */

                if (!in.getText().isEmpty()) {

                    out.setText(out.getText() + in.getText() + "\n");
                    in.setText("");
                } else {
                    JOptionPane.showMessageDialog(in, "Text eingeben!");
                }

            }
        });

        in.addKeyListener(new KeyListener() {

            public void keyTyped(KeyEvent e) {

            }

            public void keyReleased(KeyEvent e) {

            }

            public void keyPressed(KeyEvent e) {

                int key = e.getKeyCode();

                if (key == KeyEvent.VK_ENTER && e.isControlDown()) {

                    if (!in.getText().isEmpty()) {

                        out.setText(out.getText() + in.getText() + "\n");
                        in.setText("");
                    } else {
                        JOptionPane.showMessageDialog(in, "Text eingeben!");
                    }
                }

            }
        });

        exit.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                System.exit(0);
            }
        });
        
        saveChronic.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent evt) {
                System.out.println("Verlauf wird gespeichert!");
                
            }
        });

    }
    
    

}

und vielen Dank, dass du dich da so reinhängst :)
 

pl4gu33

Top Contributor
also wenn ich das richtig sehe hast du ja gar kein Objekt in der Klasse "UserInterfaceClient" von dem "StartingFrame", dass du überhaupt die Getter- Methode aufrufen kannst und wenn ich das richtig sehe ist der Text ja der UserName den du übergeben willst. Daher würde ich eher sagen übergeb im Konstruktor einfach den String, da dieser ja eh nicht mehr geändert wird und immer gleich bleibt also so:

Java:
  public void actionPerformed(ActionEvent evt) {
                setVisible(false);
                new UserInterface(usertxt.getText()).setVisible(true); 
            }

dann im Konstruktor (mUserName als String Attribut der Klasse UserInterfaceClient):

Java:
 public UserInterface(String string) {
        super("Cool Version 1.0");
        mUserName=string;
        actionHandler();
       ......

im Handler dann :

Java:
  if (!in.getText().isEmpty()) {
 
                    out.setText(out.getText() +" "+ mUserName+ " "+in.getText() + "\n");
                    in.setText("");
                } else {
                    JOptionPane.showMessageDialog(in, "Text eingeben!");
                }

wenn ich das richtig verstehe wolltest du das so haben oder?
 

Michael...

Top Contributor
Leider wird hier nicht der Zusammenhang ersichtlich. Aktuell besitzt UserInterfaceClient keine Referenz auf das StartFrame Objekt und kann daher die Methode gar nicht aufrufen.
 

Zel2491

Aktives Mitglied
Im Grunde versteh ich, was du meinst und ja, genau so sollte es dann sein^^
Nur hab ich noch gerad ein Verständnisproblem bei:

Java:
mUserName=string;

soll mUserName ein String sein?
also
Java:
String mUserName=string

?

Wenn ja, kann ich den im Handler ja nicht benutzen^^
Sorry, falls ich mich gerad blöd anstelle^^
 

pl4gu33

Top Contributor
naja wie gesagt du sollst ihn ja auch als Attribut der Klasse machen :)
dann kannst du ihn im Handler benutzen ;)


Java:
 private String mUserText;
 
Zuletzt bearbeitet:

Zel2491

Aktives Mitglied
Ich wusste doch, dass ich aufm Schlauch stand :D

Vielen Dank für die Hilfe - jetzt klappt alles wunderbar :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
R Swing JTextField nicht-kopierbarer Text AWT, Swing, JavaFX & SWT 1
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
P Text-Vorschläge für JTextField aus ner Liste laden AWT, Swing, JavaFX & SWT 8
Dit_ JTextField | Text auswählen und Caret setzen AWT, Swing, JavaFX & SWT 7
K Text vom JTextField auslesen AWT, Swing, JavaFX & SWT 9
Ollek Text in JTextField und JTextArea zur Laufzeit ändern AWT, Swing, JavaFX & SWT 6
S JTextField Default Text AWT, Swing, JavaFX & SWT 5
Z JTextField Text löschen AWT, Swing, JavaFX & SWT 1
C JList: Eintrag anklicken & JTextfield mit Text aus MySQL füllen? (Screenshot dabei) AWT, Swing, JavaFX & SWT 8
D JTextField Text makieren AWT, Swing, JavaFX & SWT 4
M jTextField - Text stets überschreiben AWT, Swing, JavaFX & SWT 4
P gesetzter Text wird im JTextField nicht angezeigt. AWT, Swing, JavaFX & SWT 3
vogella JToolBar mit JTextField - Größe des Text Feldes festlegen AWT, Swing, JavaFX & SWT 2
M Text aus JTextField und reg. Ausdruck AWT, Swing, JavaFX & SWT 2
L JTextField: Kompletten Text bei Selektion markieren AWT, Swing, JavaFX & SWT 5
W Text rechtsbündig [JComboBox, JTextField] ? AWT, Swing, JavaFX & SWT 2
G tiefergestellter Text in JTextField AWT, Swing, JavaFX & SWT 2
G Text zentrieren in einem JTextField ? AWT, Swing, JavaFX & SWT 2
O JTextField: Text nur für kurze Zeit anzeigen AWT, Swing, JavaFX & SWT 2
P Text aus JTextField auslesen und Buchstaben ersetzen AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C JToggleButton disabled Text Color AWT, Swing, JavaFX & SWT 11
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
FrittenFritze Text in Flying Saucer selectierbar machen AWT, Swing, JavaFX & SWT 0
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
N In Textdatei Text anfügen per GUI AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
S Text-Info in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 15
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
C JCheckBox disabled text color AWT, Swing, JavaFX & SWT 9
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Text in ein Textfeld eingeben und speichern AWT, Swing, JavaFX & SWT 27
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
C Swing Spinner als TableCellEditor - Text zu klein AWT, Swing, JavaFX & SWT 2
H JavaFX - Button und Text - Falsche Darstellung AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
I JavaFX formatierter Text in PDF speichern AWT, Swing, JavaFX & SWT 4
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
E Swing Text verschwindet AWT, Swing, JavaFX & SWT 1
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
G Rectangle Breite richtet such an die Breite vom Text AWT, Swing, JavaFX & SWT 1
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
F Icons neben Text in Listview setzen AWT, Swing, JavaFX & SWT 2
K Rich Text FX von TomasMikula AWT, Swing, JavaFX & SWT 0
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
S JAVAFX HTMLEditor wrap text AWT, Swing, JavaFX & SWT 1
J JavaFX Translation Text/Label AWT, Swing, JavaFX & SWT 2
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
A JavaFX HTMLEditor in Text umwandeln AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel anzuzeigenden Text zentrieren AWT, Swing, JavaFX & SWT 9
javampir Java FX Text verschwindet nicht AWT, Swing, JavaFX & SWT 9
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
E To get a color text on the TextArea AWT, Swing, JavaFX & SWT 4
E To get color text on the TextArea AWT, Swing, JavaFX & SWT 5
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
U WYSIWYG Text-Editor für JFrames AWT, Swing, JavaFX & SWT 8
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
J Text bei Eingabe löschen AWT, Swing, JavaFX & SWT 5
A SWT Auto completion in text box AWT, Swing, JavaFX & SWT 5
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
B Text auf Display ausgeben [LWJGL] AWT, Swing, JavaFX & SWT 2
G Text im textfeld in einem Editor anzeigen AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben