2016-08-12 12 views
0

私のGUIメソッドでは、Java JFrameクラスを使用して2つのtextFieldがあります。 1つのtextFieldはテキストをサーバーに送信し(この関数は必要に応じて機能します)、サーバーからデータを受け取り、GUIに出力するtextFieldを1つ送信します。Javaの.setTextメソッドは一度しか動作しません

私はテキストをテキストフィールドに設定するのにtextField.setText(ServerString)メソッドを使用していますが、.setTextメソッドは、GUIがサーバー上のコマンドで起動された後に文字列からテキストを取得するだけですtextFieldを再度実行します。

何かが入力されるたびに変数ServerStringがライブ更新されているが、それでもテキストをtextFieldに設定しないことを確認しました。一度起動すると、メソッドが呼び出されていることを確認して、.setText()が最初の起動後に機能していないことを確認しました。私はtry-catchステートメントからテキストを空白に設定しようと試みました(これはうまくいかなかった)。

私には何か不足している機能や、私が使用していない機能や別の機能がありますか?

コードの単なる例あなたは、私がここで

を使用していますどのようなライブラリとか知っているようでは問題に

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

というコードを呼び出すだけで、コードにロジックを追加するだけです。あなたが持っている詳細なコードを提供できますか? – randominstanceOfLivingThing

+0

ページを再読み込みしていますか? –

+1

問題の[mcve]を提供してください –

答えて

0

あなたがテキストを設定することができますを再作成するために使用することができ、私のGUIのコードでありますあなたが何回も望むように。サーバの文字列が変更されたときはいつでも、

+0

それは私がやっていることですが、それは動作しません...私はいくつかのサーバーサイドのものを除いて私のGUIのための自分のコードを提供している – Shiloh

関連する問題