【问题标题】:Update/Fetch/Sync a JTextField input by user in a class to a JTextField of another class更新/获取/同步用户在一个类中输入的 JTextField 到另一个类的 JTextField
【发布时间】:2011-06-09 09:25:13
【问题描述】:

公共类 FormattedName 扩展 javax.swing.JFrame {

/** Creates new form FormattedName */
public FormattedName() {
    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() {

    Formatted = new javax.swing.JTextField();
    NameOpt = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    Formatted.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            FormattedActionPerformed(evt);
        }
    });

    NameOpt.setText("Name");
    NameOpt.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            NameOptActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(NameOpt)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(Formatted, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(21, 21, 21)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(NameOpt)
                .addComponent(Formatted, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addContainerGap(21, Short.MAX_VALUE))
    );

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

private void FormattedActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
}

private void NameOptActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    Opt option = new Opt();

}


/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new FormattedName().setVisible(true);
        }
    });
}
// Variables declaration - do not modify
private javax.swing.JTextField Formatted;
private javax.swing.JButton NameOpt;
// End of variables declaration

}

和另一个班级

公共类 Opt 扩展 javax.swing.JFrame {

/** Creates new form Opt */
public Opt() {
    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() {

    firstname = new javax.swing.JLabel();
    lastname = new javax.swing.JLabel();
    middleName = new javax.swing.JLabel();
    first_name = new javax.swing.JTextField();
    last_name = new javax.swing.JTextField();
    middlename = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    firstname.setText("FirstName");

    lastname.setText("LastName");

    middleName.setText("MiddleName");

    first_name.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            first_nameActionPerformed(evt);
        }
    });

    last_name.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            last_nameActionPerformed(evt);
        }
    });

    jButton1.setText("OK");

    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(19, 19, 19)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(jButton1)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(middleName)
                        .addComponent(lastname)
                        .addComponent(firstname))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(first_name, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)
                        .addComponent(last_name)
                        .addComponent(middlename))))
            .addContainerGap(22, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(firstname)
                .addComponent(first_name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(18, 18, 18)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(lastname)
                .addComponent(last_name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(18, 18, 18)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(middleName)
                .addComponent(middlename, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(jButton1)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

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

private void first_nameActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
}

private void last_nameActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
}

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
  String firstname =  first_name.getText();
    String lastname = last_name.getText();
    outputName = firstname + lastname;
}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new Opt().setVisible(true);
        }
    });
}

private String outputName;
// Variables declaration - do not modify
private javax.swing.JTextField first_name;
private javax.swing.JLabel firstname;
private javax.swing.JButton jButton1;
private javax.swing.JTextField last_name;
private javax.swing.JLabel lastname;
private javax.swing.JLabel middleName;
private javax.swing.JTextField middlename;
// End of variables declaration

}

如何将在 Opt 类文本字段中输入的输入同步到 FormattedName 类的文本字段,带或不带 OK 按钮事件。

尝试使用 get() 但不起作用。

【问题讨论】:

标签: java swing jbutton jtextfield


【解决方案1】:

在 Opt 中创建一个描述文本的 getter 方法,类似于

public String getFullName(){   
    return first_name.getText() + middelname.getText() + last_name.getText();  
}

你可以在你的 nameOptActionPerformed() 中使用它

private void nameOptActionPerformed(java.awt.event.ActionEvent evt) {
    Opt option = new Opt();
    option.setVisible(true);

}

你现在有两个选择

  1. 使 Opt 类成为模态 JDialog 而不是 JFrame 或
  2. 向 FormattedName 类公开 ok 按钮的事件处理。

我亲自使用模态对话框。

【讨论】:

  • 我在 Opt 类中添加 getFullname() 方法,在 FormattedName 类中添加新的 Opt().getFullName();在 FormattedActionPerformed(java.awt.event.ActionEvent evt) 下。仍然无法正常工作。
  • @reukEN 你需要先让用户在那里输入一些东西!这就是模态对话框的原因。即等待窗口关闭,然后读取输入。
  • giraffe.i see.nope,我没有将其更改为 JDialog。我在 Opt 然后在 getFullName(){ fullName = first_name.getText() 中声明了一个名为 fullName 的私有变量...... ; return fullname } .in FormattedName,添加 Formatted.setText(new Opt().getFullName()); n 仍然不起作用。我在这里做错了吗?当我阅读有关从其他类访问 var 时完成此操作。还阅读有关可观察的 n 可以在这里应用一个简单的文本输出吗?
  • @reukEN 我建议你编辑你的问题,明确你的目标是什么。
猜你喜欢
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多