java - 方法并将变量从jInternalFrame传递给jFrame

时间:2015-04-16 10:02:04

标签: java swing methods jframe jinternalframe

我有以下问题。 我是java的新手,我正在尝试将一个变量user_id从JInternalFrame发送到JFrame。

我无法使用构造函数,因为JFrame是在启动时激活并包含jDesktoPane的主程序

所以我试图使用这些方法,然而,不能这样做(我发布了两种方法,我试过但都没有用)

方法A)

jFrame(Main_window)中的代码

public javax.swing.JTextField getID() {
  return jTextField_id;
}

public void setID(javax.swing.JTextField ID) 
{
jTextField_id = ID;
}

jInternalFrame中的代码

Main_window send = new Main_window(); 
send.getID().setText("123");

方法B)

jFrame(Main_window)中的代码 USER_ID是可在jFrame

的任何位置访问的变量
public void setID(String ID) 
{
USER_ID = ID;
}

jInternalFrame中的代码

Main_window send = new Main_window(); 
send.setID("123");

这两种方法都不会改变任何东西,但在编译中没有错误

如果还有其他办法,请告诉我:)

抱歉我的语言和语法。 如果这有帮助我使用Eclipse编译器

此代码对我有用,求助

public void set_ID(String ID) 
{
    Test_JF mainWindow = (Test_JF) this.getTopLevelAncestor();;
    mainWindow.setID(ID);
}

由set_ID(“1234”)激活;

2 个答案:

答案 0 :(得分:0)

在JInternalFrame类中尝试:

JFrame mainWindow = (JFrame)this.getTopLevelAncestor();
mainWindow.setID("123");

答案 1 :(得分:0)

好的,所以这是我的程序的较小版本 " Test_JF"是一个主要的JFrame和" Test_JIF"是一个JInternalFrame

这是TestJF

public class Test_JF extends JFrame {

private JPanel contentPane;
private JTextField user_id;

String USER_ID;

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

public Test_JF() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 750, 500);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    user_id = new JTextField();
    user_id.setBounds(338, 11, 86, 20);
    contentPane.add(user_id);
    user_id.setColumns(10);

    JButton button_user_id = new JButton("fill user id");
    button_user_id.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            user_id.setText(USER_ID);
        }
    });
    button_user_id.setBounds(239, 10, 89, 23);
    contentPane.add(button_user_id);

    JDesktopPane desktopPane = new JDesktopPane();
    desktopPane.setBounds(10, 56, 714, 395);
    contentPane.add(desktopPane);

    addWindowListener(new WindowAdapter() {
        @Override
        public void windowOpened(WindowEvent arg0) {
            Test_JIF Open = new Test_JIF();
            desktopPane.add(Open);
            Open.show();
        }
    });

}

public void setID(String ID) 
{
USER_ID = ID;
}}

这是TestJIF

public class Test_JIF extends JInternalFrame {

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


public Test_JIF() {
    Test_JF mainWindow = (Test_JF)this.getTopLevelAncestor();
    setBounds(100, 100, 328, 199);
    getContentPane().setLayout(null);

    JButton button_send = new JButton("New button");
    button_send.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            mainWindow.setID("123");
        }
    });
    button_send.setBounds(111, 73, 89, 23);
    getContentPane().add(button_send);

}}

我清除这里的导入(在网上)所以它会更清洁