单击按钮如何更改javafx中文本框的语言? [英] How to Change language of textbox in javafx on click of a button?

查看:75
本文介绍了单击按钮如何更改javafx中文本框的语言?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在JavaFx中构建一个聊天应用程序,其中有一个按钮可以让用户在英​​语和印地语(印度区域语言)之间切换。问题是我无法弄清楚我应该如何更改用户单击按钮时JavaFx文本框的文本语言。由于这个问题,我尚未开始开发我的项目。请给我一个演示程序,该程序可以在单击按钮时更改文本框中的文本。



谢谢!!!



编辑:
我尝试这样做,很抱歉,我从来没有使用资源包或语言环境来动态更改文本,所以我不知道如何实现它...。

  import java.util.Locale; 

公共类demoLang扩展了javax.swing.JFrame {

public demoLang(){
initComponents();
}


@SuppressWarnings( unchecked)
//< editor-fold defaultstate = collapsed desc = Generated Code>
private void initComponents(){

jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setFont(new java.awt.Font( Tahoma,0,24)); // NOI18N
jLabel1.setText( language);

jButton1.setFont(new java.awt.Font( Tahoma,0,18)); // NOI18N
jButton1.setText( Change);
jButton1.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton1ActionPerformed(evt);
}
});

jTextField1.setText( jTextField1);

javax.swing.GroupLayout布局= new javax.swing.GroupLayout(getContentPane());
getContentPane()。setLayout(layout);
layout.setHorizo​​ntalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(71,71,71 )
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,113,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addContainerGap(116,Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout。 Alignment.TRAILING)
.addComponent(jTextField1,javax.swing.GroupLayout.PREFERRED_SIZE,162,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1,javax.swing.GroupLayout.PREFERRED_SIZE,151, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(123,123,123))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,50,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextField1,javax .swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,27,Short.MAX_VALUE)
.addComponent(jButton1,javax .swing.GroupLayout.PREFERRED_SIZE,39,javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(27,27,27))
);

pack();
} //< / editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
Locale local = new Locale( hi, IN);
Locale.setDefault(local);

jTextField1.setLocale(local);
jTextField1.setText( + local.getDisplayLanguage());
}

public static void main(String args []){
/ *设置Nimbus外观* /
//<编辑器折叠默认状态= collapsed desc =外观设置代码(可选)>
/ *如果Nimbus(在Java SE 6中引入)不可用,请保持默认外观。
*有关详细信息,请参见http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
* /
试试{
for(javax.swing .UIManager.LookAndFeelInfo信息:javax.swing.UIManager.getInstalledLookAndFeels()){
if( Nimbus .equals(info.getName())){
javax.swing.UIManager.setLookAndFeel(info .getClassName());
休息时间;
}
}
} catch(ClassNotFoundException ex){
java.util.logging.Logger.getLogger(demoLang.class.getName())。log(java.util。 logging.Level.SEVERE,null,例如);
} catch(InstantiationException ex){
java.util.logging.Logger.getLogger(demoLang.class.getName())。log(java.util.logging.Level.SEVERE,null,ex) ;
} catch(IllegalAccessException ex){
java.util.logging.Logger.getLogger(demoLang.class.getName())。log(java.util.logging.Level.SEVERE,null,ex) ;
} catch(javax.swing.UnsupportedLookAndFeelException ex){
java.util.logging.Logger.getLogger(demoLang.class.getName())。log(java.util.logging.Level.SEVERE, null,例如);
}
//< / editor-fold>

/ *创建并显示以下表格* /
java.awt.EventQueue.invokeLater(new Runnable(){
public void run(){
new demoLang ().setVisible(true);
}
});
}

//变量声明-不要修改
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
//变量结尾声明

}

解决方案

好!!!最后,找到问题的答案...



有2种主要的翻译服务,其中一项是付费的,而另一项是免费的。



共享解决方案:



我使用了 java-google-translate-text-to-speech 而不是 Google Translate API v2 Java。



关于java-google-translate-text-to-语音



Api是非官方的,它具有Java Translate的主要功能。



它还提供语音API。如果要翻译文本 Hello!在印地语中只需写:

 译者翻译= Translator.getInstance(); 
字符串文本= translate.translate( Hello!,Language.ENGLISH,Language.HINDI);
System.out.println(text); //नमस्غे

它是免费的!



一个要点:Google Translate API v2现在可以作为付费服务使用。
Google Translate API可作为付费服务使用。有关详细信息,请参见Google的定价和常见问题解答页面。



但是,java-google-translate-text-to-speech是免费的!
API自Google更新其代码以来存在一个问题。可以从以下 b b b b !现在您可以关闭线程了:)


I want to build a chat Application in JavaFx in which there will be a button that lets user switch between languages English and Hindi (Indian regional language).The problem is I am not able to figure out how am I suppose to change the language of text of a JavaFx Textbox when the user clicks the button. I have not yet started developing my project because of this problem. Plz just give me a demo program that changes the text in the textbox when a button is clicked.

Thanks!!!

EDIT: I Tried doing this, SOrry I have never use resource bundles or locales to change text dynamically so i dont know how to implement it....

import java.util.Locale;

public class demoLang extends javax.swing.JFrame {

public demoLang() {
    initComponents();
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jLabel1 = new javax.swing.JLabel();
    jButton1 = new javax.swing.JButton();
    jTextField1 = new javax.swing.JTextField();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jLabel1.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
    jLabel1.setText("language");

    jButton1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
    jButton1.setText("Change");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    jTextField1.setText("jTextField1");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(71, 71, 71)
            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(116, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 162, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(123, 123, 123))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 27, Short.MAX_VALUE)
            .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(27, 27, 27))
    );

    pack();
}// </editor-fold>                        

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    Locale local = new Locale("hi","IN");
    Locale.setDefault(local);

    jTextField1.setLocale(local);
    jTextField1.setText("" + local.getDisplayLanguage());
}                                        

public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(demoLang.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(demoLang.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(demoLang.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(demoLang.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

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

// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration                   

}

解决方案

Ok!!! Finally, Found an answer for the problem...

There are 2 major translation services available one is paid and one is free.

Sharing the Solution:

I used java-google-translate-text-to-speech instead of Google Translate API v2 Java.

About java-google-translate-text-to-speech

The Api is unofficial with the main features of Google Translate in Java.

It also provide text to speech api. If you want to translate the text "Hello!" in Hindi just write:

Translator translate = Translator.getInstance();
String text = translate.translate("Hello!", Language.ENGLISH, Language.HINDI);
System.out.println(text); // "नमस्ते" 

It's free!

One Important Point: Google Translate API v2 is now available as a paid service. Google Translate API is available as a paid service. See the Pricing and FAQ pages on google for details.

BUT, java-google-translate-text-to-speech is FREE! There is one issue with the API Since google updated its code. The custom Version can be downloaded from this direct link.

Thanks!!! Now you can Close the Thread :)

这篇关于单击按钮如何更改javafx中文本框的语言?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆