【问题标题】:Getting value of primitive boolean type of one JFrame form in another JFrame Form?在另一个 JFrame 表单中获取一个 JFrame 表单的原始布尔类型的值?
【发布时间】:2015-11-23 15:49:15
【问题描述】:

我使用 java swing 和 java-google-text-to-speech-api 设计了这个示例聊天应用程序,它允许您翻译语言。我在这个演示程序中尝试实现的是单击选择按钮选择按钮的文本必须先更新为英语,然后是印地语,并相应地将标志变量 i 设置为 0 或 1。然后在服务器程序中使用 i 的这个值我想弄清楚应该显示印地语消息还是英语。但我无法做到这一点。我处理事件以实现这一目标的方式有什么问题吗? ?如果是,请给出解决方案。

另外,我面临的另一个问题是,一旦我从客户端向服务器发送一条消息,在我重新运行程序之前,我无法发送更多消息。我该如何解决这个问题???

请在这方面提供帮助,如果您需要更多解释,请告诉我......

谢谢:)

CLIENT.JAVA

package serverappdemo;
import java.io.DataOutputStream;
import java.net.Socket;
import com.gtranslate.Translator;
import com.gtranslate.Language;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Client extends javax.swing.JFrame {
    Socket s;
    DataOutputStream dout;
    String ogmsg;

    public Client() {
        initComponents();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        try {
            s = new Socket("localhost", 6666);
        }catch(java.io.IOException e) {}
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        System.exit(0);
    }                                        

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            // TODO add your handling code here:
            ogmsg = jTextField1.getText();
            dout = new DataOutputStream(s.getOutputStream()) ;
            dout.writeUTF(ogmsg);
            dout.flush();
            dout.close();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        jButton3.setText("Eng");
        callLang();
    }                                        

    public int callLang() {
        int i = 0;
        if(jButton3.getText().equals("Eng")) {
            i = 0;
        } else if(jButton3.getText().equals("Hin")) {
    //        jButton3.setText("Eng");
    //        Translator tr = Translator.getInstance();
    //        ogmsg = tr.translate(ogmsg, Language.ENGLISH, Language.HINDI);
              i = 1;
        }
        return i;
    }

    public static void main(String args[]) {

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Client().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
}

SERVER.JAVA

//I removed the editor folds that contained form design code.
package serverappdemo;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.DataInputStream;
import java.io.IOException;
import com.gtranslate.Language; // API
import com.gtranslate.Translator; //API

public class Server extends javax.swing.JFrame {
    ServerSocket ss;
    Socket s;
    DataInputStream dis;
    Client c;
    String str;
    Translator tr = Translator.getInstance();
//    int i = c.callLang();

public Server() {
    this.c = new Client();
    initComponents();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        server();
    }catch(java.io.IOException e) {}
}                                        

public void server() throws java.io.IOException {
    ss = new ServerSocket(6666);
    s = ss.accept();
    readData();
    dis.close();
    s.close();
}

public void readData() throws IOException {
    dis = new DataInputStream(s.getInputStream());
    str = (String) dis.readUTF();

    if( c.callLang() == 1 ) {
        Translator tr = Translator.getInstance();
        str = tr.translate(str, Language.ENGLISH, Language.HINDI);
        jTextArea1.setText(str);
    } else if(c.callLang() == 0) {
        jTextArea1.setText(str);
    }
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    System.exit(0);
}                                        


public static void main(String args[]) {

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Server().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration                   

}

【问题讨论】:

  • 究竟有什么不适合你?有错误吗?如果有,您可以发布堆栈跟踪吗?
  • 没有错误,在所有情况下,它都以英语显示消息。问题是服务器程序无法识别必须使用英语或印地语。

标签: java swing event-handling chat actionevent


【解决方案1】:

它很简单,使用 JcomboBoxes 选择语言并将该值传递给其他表单,然后设置首选语言。但是,请务必在打包程序时牢记访问修饰符的概念。

【讨论】:

    【解决方案2】:

    您为什么不尝试使用 JComboBox 来选择一种语言,然后使用该类的实例在第二帧中传递该 selectionindex :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多