java - 如何将文本字段(JFrame 1)的输入值传递给标签(JFrame 2)

标签 java swing netbeans jframe jtextfield

我被困在我的程序中很长时间了。原因是,我不知道如何将 JFrame1 文本字段中输入的文本传递到位于 JFrame2 中的标签。文本字段中输入的文本应在 JFrame 2 中显示为标签。我是 java 新手,所以我真的不知道我将使用什么代码。请帮助我。

我的 JFrame1 是 LoginForm。

enter image description here

如果您需要,这里是代码:

import java.sql.*;
import javax.swing.*;

public class LoginForm extends javax.swing.JFrame {

Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;

public LoginForm() {
    initComponents();
    conn = dbconnect.ConnectDB();
}


private void b_loginMouseClicked(java.awt.event.MouseEvent evt) {                                     
    // TODO add your handling code here:

String sql = "select * from tbl_login where username = '"+username.getText()+"' and password = '"+password.getText()+"'";
        try {
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
                if (rs.next()){
                    String type = rs.getString("type");
                        if (type.equals("admin")) {
                            AdminHome ah = new AdminHome();
                            ah.setVisible(true);
                        }
                        else {
                            EmployeeHome eh = new EmployeeHome();
                            eh.setVisible(true);
                        }
                }
                else {
                    JOptionPane.showMessageDialog(null, "Incorrect username or password.");
                }
        }
        catch (Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
}                                    

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {

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

// Variables declaration - do not modify                     
private javax.swing.JButton b_login;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPasswordField password;
private javax.swing.JTextField username;
// End of variables declaration                   
}

这是 JFrame2,即 EmployeeHome

enter image description here

这是 JFrame2 的代码:

import java.sql.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;


public class EmployeeHome extends javax.swing.JFrame {

Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;

/**
 * Creates new form EmployeeHome
 */
public EmployeeHome() {
    initComponents();
    conn = dbconnect.ConnectDB();
    DateTime ();
}


public void DateTime (){

    Thread clock = new Thread (){
        public void run () {
            for (;;){
                Calendar cal = new GregorianCalendar ();
                String month = cal.getDisplayName(Calendar.LONG, Calendar.MONTH, Locale.getDefault());
                int day = cal.get(Calendar.DAY_OF_MONTH);
                int year = cal.get(Calendar.YEAR);
                String week;
                    if (cal.get(Calendar.DAY_OF_WEEK) == 1) {
                        week = "Sunday";
                    }
                    else if (cal.get(Calendar.DAY_OF_WEEK) == 2) {
                        week = "Monday";
                    }
                    else if (cal.get(Calendar.DAY_OF_WEEK) == 3) {
                        week = "Tuesday";
                    }
                    else if (cal.get(Calendar.DAY_OF_WEEK) == 4) {
                        week = "Wednesday";
                    }
                    else if (cal.get(Calendar.DAY_OF_WEEK) == 5) {
                        week = "Thursday";
                    }
                    else if (cal.get(Calendar.DAY_OF_WEEK) == 6) {
                        week = "Friday";
                    }
                    else {
                        week = "Saturday";
                    }
                l_date.setText(week + ", " + month + " " + day + ", " + year);

                int hour = cal.get(Calendar.HOUR);
                int minute = cal.get(Calendar.MINUTE);
                int second = cal.get(Calendar.SECOND);
                String ampm;
                    if (cal.get(Calendar.AM_PM) == 0) {
                        ampm = "AM";
                    }
                    else {
                        ampm = "PM";
                    }
                l_time.setText(hour + " : " + minute + " : " + second + ampm);
                    try {
                        sleep (1000);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(EmployeeHome.class.getName()).log(Level.SEVERE, null, ex);
                    }
            }
        }
    };
    clock.start();
}


/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new EmployeeHome().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton b_logout;
private javax.swing.JButton b_tin;
private javax.swing.JButton b_tout;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JLabel l_address;
private javax.swing.JLabel l_age;
private javax.swing.JLabel l_bdate;
private javax.swing.JLabel l_contact;
private javax.swing.JLabel l_date;
private javax.swing.JLabel l_dept;
private javax.swing.JLabel l_id;
private javax.swing.JLabel l_name;
private javax.swing.JLabel l_time;
private javax.swing.JLabel l_username;
// End of variables declaration                   
}

我的目标是将输入的文本传递到用户名文本框(image1)到用户名标签(image2)旁边的标签。你能帮我解决这个问题吗?

最佳答案

您可以在创建另一个 JFrame 实例时注入(inject)该属性。

示例:

EmployeeHome eh = new EmployeeHome(myTextField.getText());

或者

EmployeeHome eh = new EmployeeHome();
eh.setUserNameText(myTextField.getText());

您需要在EmployeeHome中提供该方法。因此,更改这个类并添加它。

public EmployeeHome(String userName) {
    initComponents();
    userLabel.setText(userName);
    conn = dbconnect.ConnectDB();
    DateTime ();
}

或者

public void setUserNameText(String name){
    this.userLabel.setText(name);
}

关于java - 如何将文本字段(JFrame 1)的输入值传递给标签(JFrame 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20818422/

相关文章:

java - JOptionPane.showConfirmDialog 不停止当前线程

java - 在不写入磁盘的情况下显示在 MySQL 中存储为 BLOB 的图像

java - 需要修改Cloudsim中现有的TASK SCHEDULING算法。我应该使用哪些文件?

Java Apache Spark flatMaps 和数据整理

java - Android非阻塞文件I/O?

java - 由于行结束样式不一致,tortoise svn 无法导入到存储库

java - 受内容影响的 JSplitPane 分隔线颜色

java - MySQL 连接池超过 Java 中的最大连接数

java - Ctrl+Space 在 NetBeans 中不起作用

java - 如何在 java netbeans IDE 8.1 中调整设置为图标的图像大小