2016-08-12 3 views
0

In meiner GUI-Methode Ich habe zwei Textfelder, die Klassen Java JFrame verwenden. Ein TextField sendet Text an den Server (diese Funktion arbeitet nach Bedarf) und ein TextField, das Daten vom Server empfängt und an die GUI ausgibt.Java .setText Methode funktioniert nur einmal

Ich bin mit der textField.setText(ServerString) Methode meines Text auf das Textfeld zu setzen, aber die .setText Methode nur den Text aus dem String einmal erhalten, wenn die GUI durch einen Befehl auf dem Server gestartet wird, und legen Sie dann nie den Text auf das Textfeld erneut.

Ich habe überprüft, dass die Variable ServerString wird vom Server aktualisiert jedes Mal aktualisiert, wenn etwas eingegeben wird, aber es wird immer noch nicht den Text auf die TextField gesetzt. Sobald es gestartet wird, habe ich überprüft, dass die Methode aufgerufen wird und dass .setText() nach dem ersten Start nicht funktioniert. Ich habe alles von try-catch Anweisungen versucht, den Text auf leer zu setzen (was nicht funktioniert hat).

Gibt es etwas, was ich bin fehlt oder eine Funktion, die ich nicht oder eine andere Aufruf ich verwenden sollte?

Nur ein Beispiel von Code, so dass Sie wissen, was Bibliotheken und Sachen, die ich

Hier bin mit meinem GUI-Code, der verwendet werden kann, um das Problem

package Encrypter.src; 
import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 

import net.dv8tion.jda.events.message.MessageReceivedEvent; 

import javax.swing.JLabel; 
import java.awt.Font; 
import javax.swing.JTextField; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
import java.io.IOException; 
import javax.swing.JTextPane; 
import javax.swing.event.AncestorListener; 
import javax.swing.event.AncestorEvent; 

public class TalkGUI extends JFrame { 
    JTextPane textPane = new JTextPane(); 
    private JPanel contentPane; 
    private JTextField textField; 
    private JTextField textField2; 
    //JTextPane textPane = new JTextPane(); 
    /** 
    * Launch the application. 
    */ 
    public static void GUI() { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        TalkGUI frame = new TalkGUI(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public TalkGUI() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 647, 448); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     textField = new JTextField(); 
     textField.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent e) { 
       int key = e.getKeyCode(); 
       if (key == KeyEvent.VK_ENTER) { 
        System.out.println("ENTER pressed"); 


        if(textField.getText().length() > 0) 
        { 
        } 

        //textField.setText("test"); 
        //System.out.println(textField.getText()); 


       } 
      } 
     }); 

     textField.setBounds(10, 77, 292, 321); 
     contentPane.add(textField); 
     textField.setColumns(10); 

     JLabel lblHd = new JLabel("Input to Server"); 
     lblHd.setBounds(86, 34, 108, 32); 
     contentPane.add(lblHd); 

     JLabel lblOutputFromServer = new JLabel("Output From Server"); 
     lblOutputFromServer.setBounds(388, 43, 174, 14); 
     contentPane.add(lblOutputFromServer); 

     textField2 = new JTextField(); 
     textField2.setBounds(328, 77, 293, 321); 
     contentPane.add(textField2); 
     textField2.setColumns(10); 

    /* 
     textPane.setBounds(312, 77, 309, 321); 
     textPane.setEditable(false); 
     textPane.setText("you cant edit this paneen"); 
     contentPane.add(textPane); 
     */ 
    } 

    public void set(String string) 
    { 
     System.out.println(string + " ok"); 
     textField2.setText(string); 
    } 


} 
+0

Es ist höchstwahrscheinlich ein Problem in Ihrem Code. Können Sie den detaillierten Code angeben, den Sie haben? – randominstanceOfLivingThing

+0

Laden Sie die Seite neu? –

+1

Bitte liefern eine [MCVE] des Problems –

Antwort

0

Sie können den Text neu zu erstellen so oft du willst. Sie setzen nur eine Logik in Ihrem Code, dass, wenn Ihre Server-Zeichenfolge geändert wird, dann rufen Sie einfach setTest() Methode, also: textField2.setText(ServerString);

+0

das ist, was ich getan habe, und es funktioniert nicht ... Ich habe meinen Code für meine GUI zur Verfügung gestellt, einige der Server-Seite Zeug ausschließen – Shiloh