如何将值从一个JFrame传递到另一个JFrame?

时间:2013-05-04 20:49:06

标签: java swing jframe jbutton multiple-instances

我创建了两个JFrame。 主JFrame包含文本区域。我的子JFrame包含一个下拉列表。 任务是传递我在下拉列表中选择的值,并显示在主JFrame的文本区域中。

子JFrame中的代码:

private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
    close();      
    room=cmbRoom.getSelectedItem().toString();
}

主JFrame中的代码:

private void btnDisplayActionPerformed(java.awt.event.ActionEvent evt) {
    roomNo r=new roomNo();
    txtArea2.append("\nRoom Number: " + r.getroom());
}                                           

3 个答案:

答案 0 :(得分:0)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class PassData extends JFrame
{
    JTextField text;
    PassData(){
    JLabel l=new JLabel("Name: ");
    text=new JTextField(20);
    JButton b=new JButton("Send");
    setLayout(null);
    l.setBounds(10,10,100,20);
    text.setBounds(120,10,150,20);
    b.setBounds(120,40,80,20);
    add(l);
    add(text);
    add(b);
    setVisible(true);
    setSize(300,100);
      b.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
        String value=text.getText();
        NextPage page=new NextPage(value);
        page.setVisible(true);
        }
    });
   }
    public static void main(String[] args) 
  {
    new PassData();
  }
}

答案 1 :(得分:0)

class NextPage extends JFrame
{
  NextPage(String st)
  {
     setLayout(null);
     setDefaultCloseOperation(javax.swing. WindowConstants.DISPOSE_ON_CLOSE);
     setTitle("Welcome");
     JLabel lab=new JLabel("Welcome  "+st);
     lab.setBounds(10,10,500,20);
     add(lab);
     setSize(300, 100);
  }
}

答案 2 :(得分:0)

这可能不是完全正确的答案,但这可以胜任。

假设您有2个Jframe,即Home.java和Second.java

下面的Second.java代码,

public static String selection = "";//static variable to store seletced value from combobox
Home h = new Home();//instance of Home Jframe

/**
* return selected value (called from Home Jframe)
*/
public static String getSeletced() {
    return selection;
}

/**
* get selected value from comboBox event
*/
private void cmbLapActionPerformed(java.awt.event.ActionEvent evt) {                                       
    selection = cmbLap.getSelectedItem().toString();
    h.isSelected = true;//this is to control data duplication
}  

现在,对于Home.java文件,我们可以使用formWindowGainedFocus事件来更新jTextArea。 Home .java文件包含以下代码,

public static boolean isSelected = false;//flag to check combo box is selected

private void formWindowGainedFocus(java.awt.event.WindowEvent evt) {                                       
    System.out.println(isSelected);
    if (isSelected) {
        String text = new Second().getSeletced();
        System.out.println(text);
        txaData.append("Your Laptop: " + text + "\n");//appending data
        isSelected = false;//to prevent duplication
    }
}  

此方法可用于使用来自另一个jFrame的数据更新jTextArea。