/ / java - Methode und Übergabe einer Variablen von jInternalFrame an jFrame - Java, Swing, Methoden, jframe, jinternalframe

Java - Methode und Übergabe der Variablen von jInternalFrame an jFrame - Java, Swing, Methoden, Jframe, jinternalframe

und ich habe folgendes problem. Ich bin neu in Java und ich versuche, eine Variable, die user_id ist, von JInternalFrame an JFrame zu senden.

Ich kann keinen Konstruktor verwenden, da JFrame das Hauptprogramm ist, das beim Start aktiviert wird und jDesktoPane enthält

Ich habe versucht, die Methoden zu verwenden, kann es aber nicht. (Ich habe die beiden Methoden veröffentlicht, die ich beide ausprobiert habe, aber nicht funktioniert haben.)

Methode A)

Code in jFrame (Hauptfenster)

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

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

Code in jInternalFrame

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

Methode B)

Code in jFrame (Hauptfenster) USER_ID ist eine Variable, auf die an jeder Stelle von jFrame zugegriffen werden kann

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

Code in jInternalFrame

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

beide Methoden ändern nichts, haben aber keine Fehler bei der Kompilierung

Wenn es eine andere Möglichkeit gibt, sag es mir bitte :)

Entschuldigung für meine Sprache und Grammatik. Wenn dies hilft, verwende ich Eclipse Compilator

Dieser Code hat bei mir funktioniert

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

aktiviert durch set_ID ("1234");

Antworten:

0 für die Antwort № 1

Versuchen Sie dies in Ihrer JInternalFrame-Klasse:

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

0 für die Antwort № 2

ok also hier ist eine kleinere version meines programms "Test_JF" ist ein Haupt-JFrame und "Test_JIF" ist ein JInternalFrame

Hier ist 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;
}}

Hier ist 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);

}}

Ich lösche Importe hier (im Web), damit es sauberer wird