2015-04-21 41 views
0

我正在嘗試創建一個具有一個輸入字段和一個輸出字段的應用程序(gui)。textfield作爲web服務的輸入

我想使它在輸入字段中寫入的文本將被轉發到Web服務,並且從Web服務獲得的結果應顯示在輸出字段中。

我想我已經掌握瞭如何做到這一點,但是,知道我只是坐在這裏,茫然地凝視着屏幕。

我製作了gui(gui.java)並擁有一些控制器(controller.java)。

我只是不能在我應該從文本字段調用Web服務之間連接點,然後將結果呈現在另一個文本字段(或其他文本字段)中。

任何幫助,將不勝感激。

這是我到目前爲止有:

import java.awt.EventQueue; 

import javax.swing.JFrame; 

import java.awt.CardLayout; 

import javax.swing.JTextField; 
import javax.swing.JPanel; 
import javax.swing.JTextPane; 
import javax.swing.SwingConstants; 

import java.awt.TextField; 
import java.awt.GridLayout; 

import javax.swing.border.TitledBorder; 
import javax.swing.BoxLayout; 

import webservicefile.control.Controller; 
import javax.swing.JTextArea; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 


public class window { 

    private JFrame frame; 
    private Controller control; 
    private JTextField txtInput; 
    /** 
    * Launch the application. 
    */ 


    /** 
    * Create the application. 
    */ 
    public window(Controller control) { 
     this.control = control; 
     initialize(); 
     frame.setVisible(true); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0)); 

     JPanel panel = new JPanel(); 
     frame.getContentPane().add(panel); 
     panel.setLayout(null); 

     txtInput = new JTextField(); 
     txtInput.setBounds(116, 30, 207, 28); 
     panel.add(txtInput); 
     txtInput.setColumns(10); 

     JTextArea txtDisplay = new JTextArea(); 
     txtDisplay.setBounds(116, 133, 207, 121); 
     panel.add(txtDisplay); 

     JButton btnSend = new JButton("Send"); 
     btnSend.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       final String input = txtInput.getText(); 
       final String display = control.send(input); 
       txtDisplay.setText(display); 
      } 
     }); 
     btnSend.setBounds(334, 31, 96, 28); 
     panel.add(btnSend); 

    } 
} 

回答

0

您需要添加一個「OK /發送」按鈕,有一個java.awt.event.ActionListener,或者添加一個java.awt.event.KeyListener到文本字段將偵聽關鍵事件。

在這兩種情況下,當偵聽器被觸發時,您將獲取文本字段的內容並將其傳遞給WS客戶端。

一些例子,在略微僞代碼,其中WebServiceClient此類是抽象類,提供WS支持...

使用一個ActionListener

public void configureUI(final WebServiceClient client) { 
    JTextField inputField = new JTextField(); 
    JTextArea responseArea = new JTextArea(); 
    JButton sendButton = new JButton("Send"); 

    sendButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      final String text = inputField.getText(); 
      final String response = client.send(text); 
      responseArea.setText(response); 
     } 
    }); 

    // add inputField, responseArea and sendButton to the container 
} 

可替代地,使用的KeyListener

public void configureUI(final WebServiceClient client) { 
    JTextField inputField = new JTextField(); 
    JTextArea responseArea = new JTextArea(); 

    inputField.addKeyListener(new KeyAdapter() { 
     public void keyReleased(KeyEvent e) { 
      if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
       final String text = inputField.getText(); 
       final String response = client.send(text); 
       responseArea.setText(response); 
      } 
     } 
    }); 

    // add inputField, responseArea and sendButton to the container 
} 

這應該足以讓你走但仍然會給你一些學習的東西。

+0

確定很好,請原諒我的無知(我是一個完整的java-newb),但是代碼如何? (嘗試閱讀鏈接,但沒有讓我更聰明)像txtListen =新的JTextField(keyListener)什麼的? – cssprobs

+0

我會更新答案。 –

+0

謝謝,我會嘗試。在這兩種情況下,我應該有發送按鈕嗎?而且,這應該放在我的gui.java中,而不是放在我的controller.java中? – cssprobs