将表单的Java文本字段转换为新表单

将表单的Java文本字段转换为新表单,java,swing,user-interface,jframe,label,Java,Swing,User Interface,Jframe,Label,我是Java新手,只想问一个简单的问题 我有我的第一个表单和一个文本字段,一旦我点击按钮,我就会在那里输入一个文本 新表单将出现,文本字段中的文本将成为新表单的标签 我尝试了这个代码,但它不起作用 public class Data extends javax.swing.JFrame { public Data() { initComponents(); FrmLogIn f = new FrmLogIn(); User.setText(f.UName.getT

我是Java新手,只想问一个简单的问题 我有我的第一个表单和一个文本字段,一旦我点击按钮,我就会在那里输入一个文本 新表单将出现,文本字段中的文本将成为新表单的标签

我尝试了这个代码,但它不起作用

public class Data extends javax.swing.JFrame {

  public Data() {
    initComponents();

    FrmLogIn f = new FrmLogIn();
    User.setText(f.UName.getText());
    User.setVisible(true);
}

看到您的代码,您似乎没有包含事件处理部分(您需要包含它才能完成工作)

作为简要介绍,您需要在代码中执行以下操作:

button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                FrmLogIn f = new FrmLogIn();
                            User.setText(f.UName.getText());
                            f.setVisible(true);
                }
 }
注意:假设
User
JLabel
UName
一个
JTextField

而且
FrmLogIn
已经扩展了
JFrame
,并且您已经设置了
JFrame

有关事件处理的详细信息,请查阅

编辑2

示例代码片段-您需要这样的东西(这只是一个粗略的例子,让您知道如何继续工作)

编辑3
正如@madProgrammer所评论的-将
null
layout替换为
FlowLayout

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.*;
import javax.swing.JTextField;


class FrmLogIn extends JFrame{
    JLabel User;

    public FrmLogIn()  {
        setLayout(new FlowLayout());
        setSize(200,200);
        User = new JLabel("");
       // User.setBounds(20,30,100,40);
        add(User);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

}

class ForTest extends JFrame{
   JButton enter;
   JTextField UName;

    public ForTest()  {
     setLayout(new FlowLayout());
     setSize(300,300);

     enter = new JButton("enter");
     //enter.setBounds(20,20,100,30);
     UName = new JTextField();
     //UName.setBounds(40,80,60,30);
     add(UName);
     add(enter);
     setVisible(true);
     enter.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    FrmLogIn f = new FrmLogIn();
                                f.User.setText(UName.getText());
                                f.setVisible(true);
                                setVisible(false);
                    }
     }); 

     setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
      new ForTest();
    }
}

有很多方法可以解决这个问题。您可以创建自己的
JDialog
来处理输入需求(在大多数情况下我可能会这样做),但是如果您想要的是更简单一点的东西,
JOptionPane
提供了一个现成的对话框,它是高度可配置的

当然,没有什么可以阻止您混合这两个concpet(定制的
JDialog
JOptionPane


您可能希望通读并了解更多信息。

是否包含事件侦听器?Swing?为了更快地获得更好的帮助,请发布一个。我只需要在文本框中获取另一种形式的文本1)再次发布一个SSCCE。该代码无法编译。2) 参见3)“不起作用”在帮助我们诊断问题方面的作用与国际空间站上的屏蔽门一样。你以为会发生什么?发生了什么事?例如。。登录表单当我登录一个新表单时会打开并说“欢迎,用户名”例如“登录表单”当我登录我的用户名时,一个新表单会打开并在标签上说“欢迎用户名”,我说我们明白你的意思,但很难预测你做了什么以及你想要什么-检查更新,我使用你的代码。。发生的事情是登录表也出来了。。但是我的jlabel在欢迎表中仍然没有appear@kelvzy等一下?用户是JLabel还是JTextField?@kelvzy,您是否设置了
JLabel
的边界并将其添加到帧中
public class TestLogin01 {

    public static void main(String[] args) {
        new TestLogin01();
    }

    public TestLogin01() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (Exception ex) {
                }


                LoginPane loginPane = new LoginPane();

                String userName = null;
                boolean validUser = false;
                int result = JOptionPane.CANCEL_OPTION;
                do {
                    result = JOptionPane.showConfirmDialog(null, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                    switch (result) {
                        case JOptionPane.OK_OPTION:
                            // Verify user details..
                            userName = loginPane.getUserName();
                            char[] password = loginPane.getPassword();

                            // Simple random test...
                            validUser = ((int) (Math.round(Math.random() * 1))) == 0 ? true : false;
                            if (!validUser) {
                                JOptionPane.showMessageDialog(null, "Inavlid username/password", "Error", JOptionPane.ERROR_MESSAGE);
                            }
                            break;
                    }
                } while (!validUser && result != JOptionPane.CANCEL_OPTION);

                if (result == JOptionPane.OK_OPTION) {
                    if (validUser) {
                        JOptionPane.showMessageDialog(null, "Welcome back valued user " + userName, "Welcome", JOptionPane.INFORMATION_MESSAGE);
                    }
                }
            }
        });
    }

    public class LoginPane extends JPanel {

        private JTextField userName;
        private JPasswordField passwordField;

        public LoginPane() {
            userName = new JTextField(10);
            passwordField = new JPasswordField(10);

            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.WEST;

            add(new JLabel("User name: "), gbc);
            gbc.gridy++;
            add(new JLabel("Password: "), gbc);

            gbc.gridy = 0;
            gbc.gridx++;
            gbc.fill = GridBagConstraints.HORIZONTAL;

            add(userName, gbc);
            gbc.gridy++;
            add(passwordField, gbc);
        }

        public String getUserName() {
            return userName.getText();
        }

        public char[] getPassword() {
            return passwordField.getPassword();
        }
    }
}