将信息从一个Jframe传递到另一个Jframe

时间:2016-11-02 14:18:19

标签: java swing jframe multiple-instances

我的第一帧中有原始文本字段,我需要将其显示在我的其他jframe中。代码是:

JButton btnContinue = new JButton("Continue");
    btnContinue.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            String msg = nameL.getText();

            frame2 fram = new frame2 ();
            fram.setVisible(true);
            frame.dispose();

            new order (msg) .setVisible(true);

'nameL'是用户在其中输入姓名的文本框。

此代码描述了它应显示的位置:

public order(String para){
        getComponents();


    JLabel lblNewLabel_1 = new JLabel("");
    lblNewLabel_1.setBounds(91, 27, 254, 84);
    contentPane.add(lblNewLabel_1);
    lblNewLabel_1.setText(para);

这是我用户输入姓名的第一堂课

public order(String para){
        getComponents();


    import java.awt.EventQueue;
  import javax.swing.JFrame;
 import javax.swing.JButton;
 import javax.swing.JTextField;
 import javax.swing.JTextArea;
 import java.awt.Color;
 import java.awt.event.ActionListener;
 import java.awt.event.ActionEvent;
 import java.awt.Font;

 public class frame1 {

public JFrame frame;
public JTextField nameL;
public JTextField textField_1;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                frame1 window = new frame1();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public frame1() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.getContentPane().setEnabled(false);
    frame.setResizable(false);
    frame.getContentPane().setBackground(Color.GRAY);
    frame.setForeground(Color.WHITE);
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JButton btnContinue = new JButton("Continue");
    btnContinue.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            String msg = nameL.getText();

            frame2 fram = new frame2 ();
            fram.setVisible(true);
            frame.dispose();

            new order (msg) .setVisible(true);

        }
        }

    );
    btnContinue.setBounds(0, 249, 450, 29);
    frame.getContentPane().add(btnContinue);

    JTextArea txtrPleaseEnterYour = new JTextArea();
    txtrPleaseEnterYour.setEditable(false);
    txtrPleaseEnterYour.setBackground(Color.LIGHT_GRAY);
    txtrPleaseEnterYour.setBounds(0, 0, 450, 32);
    txtrPleaseEnterYour.setText("\tPlease enter your name and email below\n If you do not have or want to provide an email, Leave the space blank");
    frame.getContentPane().add(txtrPleaseEnterYour);

    JTextArea txtrEnterYourFull = new JTextArea();
    txtrEnterYourFull.setEditable(false);
    txtrEnterYourFull.setFont(new Font("Lucida Grande", Font.PLAIN, 15));
    txtrEnterYourFull.setBackground(Color.GRAY);
    txtrEnterYourFull.setText("Enter your full name");
    txtrEnterYourFull.setBounds(52, 58, 166, 29);
    frame.getContentPane().add(txtrEnterYourFull);



    nameL = new JTextField();
    nameL.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }
    }
    );
    nameL.setBackground(Color.LIGHT_GRAY);
    nameL.setBounds(52, 93, 284, 26);
    frame.getContentPane().add(nameL);
    nameL.setColumns(10);


    JTextArea txtroptionalEnterYour = new JTextArea();
    txtroptionalEnterYour.setEditable(false);
    txtroptionalEnterYour.setFont(new Font("Lucida Grande", Font.PLAIN, 15));
    txtroptionalEnterYour.setBackground(Color.GRAY);
    txtroptionalEnterYour.setText("(Optional) Enter your email");
    txtroptionalEnterYour.setBounds(52, 139, 193, 29);
    frame.getContentPane().add(txtroptionalEnterYour);

    textField_1 = new JTextField();
    textField_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }
    });
    textField_1.setBackground(Color.LIGHT_GRAY);
    textField_1.setBounds(52, 180, 284, 26);
    frame.getContentPane().add(textField_1);
    textField_1.setColumns(10);

 }
  }

我的第二课,其中必须设置文本字段

import java.awt.EventQueue;

 import javax.swing.JFrame;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.border.EmptyBorder;
 import java.awt.Color;
 import javax.swing.JButton;
 import java.awt.event.ActionListener;
 import java.awt.event.ActionEvent;
 import javax.swing.JLabel;

 public class order extends JFrame {

/**
 * 
 */
private static final long serialVersionUID = 1L;
public JPanel contentPane;
/**
 * Launch the application.
 */

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                order frame = new order();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public order() {
    setAlwaysOnTop(false);
    setTitle("Order Details // Finalization");
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setBounds(100, 100, 451, 523);
    contentPane = new JPanel();
    contentPane.setBackground(Color.LIGHT_GRAY);
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JButton btnNewButton = new JButton("Submit Order");
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            setAlwaysOnTop(true);
            JOptionPane.showMessageDialog(null, "Your Order Has Been Confirmed", "enjoy your meal", JOptionPane.YES_NO_OPTION);

        }
    });
    btnNewButton.setBounds(164, 466, 117, 29);
    contentPane.add(btnNewButton);

}

    public order(String para){
        getComponents();    

    JLabel lblNewLabel_1 = new JLabel("");
    lblNewLabel_1.setBounds(91, 27, 254, 84);
    contentPane.add(lblNewLabel_1);
    lblNewLabel_1.setText(para);


    }
    }

1 个答案:

答案 0 :(得分:1)

打开两个JFrame,让他们听EventQueue进行自定义“字符串显示”事件。

包装要在自定义事件中显示的字符串。

将其扔在事件队列中,允许两个JFrame接收事件,然后相应地显示它们。

----编辑更新----

好的,所以你对Swing有点新意,但希望对Java不太新。您需要了解子类和“监听器”设计模式。

事件是组件侦听的事物。他们要求调度员(Swing调度员由EventQueue提供)“告诉他们有关事件”,然后调度员将所需事件发送给他们。

在深入解决问题之前,听起来你需要熟悉Swing及其事件发送,所以read up on it here