为什么这个java密钥绑定没有';不行?

为什么这个java密钥绑定没有';不行?,java,swing,jframe,key-bindings,Java,Swing,Jframe,Key Bindings,我有一个JFrame,它模拟一个简单的摄氏到华氏的转换器。 我试图做的是在按下回车键时调用“转换”按钮操作 我尝试过定义默认按钮(但不起作用) 我的代码现在如下所示: public class TemperatureConverterGUI extends javax.swing.JFrame { /** * Creates new form TemperatureConverterGUI */ public TemperatureConverterGUI() { initComp

我有一个JFrame,它模拟一个简单的摄氏到华氏的转换器。 我试图做的是在按下回车键时调用“转换”按钮操作

我尝试过定义默认按钮(但不起作用)

我的代码现在如下所示:

public class TemperatureConverterGUI extends javax.swing.JFrame {

/**
 * Creates new form TemperatureConverterGUI
 */
public TemperatureConverterGUI() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    button_convert = new javax.swing.JButton();
    edittext = new javax.swing.JFormattedTextField();
    label = new javax.swing.JLabel();
    label_resultat = new javax.swing.JLabel();
    resultat = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    button_convert.setText("Converteix");
    button_convert.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            button_convertActionPerformed(evt);
        }
    });

    edittext.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0"))));
    edittext.setHorizontalAlignment(javax.swing.JTextField.CENTER);
    edittext.setToolTipText("Introdueix un número en Fahrenheit");

    label.setText("Introdueix un número en Fahrenheit:");

    label_resultat.setText("Resultat: ");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(49, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(label_resultat)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(resultat))
                .addComponent(button_convert)
                .addComponent(label)
                .addComponent(edittext, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(90, 90, 90))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(65, Short.MAX_VALUE)
            .addComponent(label)
            .addGap(12, 12, 12)
            .addComponent(edittext, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(31, 31, 31)
            .addComponent(button_convert)
            .addGap(48, 48, 48)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(label_resultat)
                .addComponent(resultat))
            .addGap(70, 70, 70))
    );

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

private void button_convertActionPerformed(java.awt.event.ActionEvent evt) {                                               
    int f = Integer.valueOf(edittext.getText());
    int c = VisualTemperatureConverter.FahrenheitToCelsius(f);
    resultat.setText(String.valueOf(c));
}                                              

/**
 * @param args the command line arguments
 */
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(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    **TemperatureConverterGUI frame = new TemperatureConverterGUI();

    frame.button_convert.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), "enter");
    frame.button_convert.getActionMap().put("enter", frame.button_convert.getAction());**


    frame.setVisible(true);
}

// Variables declaration - do not modify                     
private javax.swing.JButton button_convert;
private javax.swing.JFormattedTextField edittext;
private javax.swing.JLabel label;
private javax.swing.JLabel label_resultat;
private javax.swing.JLabel resultat;
// End of variables declaration
}
公共类TemperatureConverterGUI扩展了javax.swing.JFrame{
/**
*创建新表单TemperatureConverterGUI
*/
公共温度转换函数(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
//                           
私有组件(){
button_convert=newjavax.swing.JButton();
edittext=newjavax.swing.JFormattedTextField();
label=newjavax.swing.JLabel();
label_resultat=newjavax.swing.JLabel();
resultat=newjavax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
按钮convert.setText(“Converteix”);
按钮\u convert.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
执行的按钮(evt);
}
});
edittext.setFormatterFactory(新的javax.swing.text.DefaultFormatterFactory(新的javax.swing.text.NumberFormatter(新的java.text.DecimalFormat(“#0”)));
setHorizontalAlignment(javax.swing.JTextField.CENTER);
edittext.setToolTipText(“华氏温度下的介绍”);
label.setText(“华氏温度下的介绍”);
label_resultat.setText(“resultat:”);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addContainerGap(49,简称最大值)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(标签\结果)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(resultat))
.addComponent(按钮转换)
.addComponent(标签)
.addComponent(edittext,javax.swing.GroupLayout.PREFERRED_SIZE,212,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(90,90,90))
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addContainerGap(65,简称最大值)
.addComponent(标签)
.addGap(12,12,12)
.addComponent(edittext,javax.swing.GroupLayout.PREFERRED\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addGap(31,31,31)
.addComponent(按钮转换)
.addGap(48,48,48)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(标签\结果)
.addComponent(resultat))
.addGap(70,70,70))
);
包装();
}//                         
私有无效按钮\u convertActionPerformed(java.awt.event.ActionEvent evt){
int f=Integer.valueOf(edittext.getText());
int c=可视温度转换器。华氏摄氏度(f);
resultat.setText(String.valueOf(c));
}                                              
/**
*@param指定命令行参数
*/
公共静态void main(字符串参数[]){
/*设置Nimbus的外观和感觉*/
//
/*如果Nimbus(在JavaSE6中引入)不可用,请使用默认的外观。
*详情请参阅http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
*/
试一试{
for(javax.swing.UIManager.LookAndFeelInfo:javax.swing.UIManager.getInstalledLookAndFeels()){
if(“Nimbus”.equals(info.getName())){
setLookAndFeel(info.getClassName());
打破
}
}
}捕获(ClassNotFoundException ex){
java.util.logging.Logger.getLogger(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}catch(实例化异常){
java.util.logging.Logger.getLogger(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}捕获(非法访问例外){
java.util.logging.Logger.getLogger(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}catch(javax.swing.UnsupportedLookAndFeelException ex){
java.util.logging.Logger.getLogger(TemperatureConverterGUI.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
//
**TemperatureConverterGUI框架=新的TemperatureConverterGUI();
frame.button_convert.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0),“ENTER”);
frame.button_convert.getActionMap().put(“输入”,frame.button_convert.getAction())**
frame.setVisible(true);
}
//变量声明-不修改
私有javax.swing.JButton按钮\u转换;
私有javax.swing.JFormattedTextField edittext;
私有javax.swing.JLabel标签;
私有javax.swing.JLabel标签\u result;
私有javax.swing.JLabel resultat;
//变量结束声明
}

无需任何设置,只需将其添加到edittext设置中即可

edittext.addActionListener((ae)-> button_convertActionPerformed(null));

欢迎加入。请参见如何创建一个。我觉得你可以减少t的代码长度