Hallo JAVA Freunde,
hier mein Problem:
Ich habe 2 Frames. Im MainFrame habe ich ein Label und ein Button. Mit dem Button öffne ich ein weiteres Frame mit einem Textfield und einem Button.
Wenn ich nun im Frame2 einen Text eingebe und auf den Button klicke, soll das Frame geschlossen werden und der Text im MainFrame erscheinen.
MainFrame.java:
Frame2:
Der Knackpunkt ist im MainFrame bei actionPerformed müsste bei
jLabel.setText(meinFrame2.getEingabe());
(Zeile 39) die Methode stoppen bis die Eingabe im Frame2 erfolgt ist.
Wenn ich aus dem Frame2 ein Dialog mache und es Modal setze funktioniert es korrekt.
Falls jemand ein ähnliches Problem mal hatte wäre ich für Lösungsansetze dankbar.
Gruß Valentin
hier mein Problem:
Ich habe 2 Frames. Im MainFrame habe ich ein Label und ein Button. Mit dem Button öffne ich ein weiteres Frame mit einem Textfield und einem Button.
Wenn ich nun im Frame2 einen Text eingebe und auf den Button klicke, soll das Frame geschlossen werden und der Text im MainFrame erscheinen.
MainFrame.java:
Java:
package post1;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import javax.swing.JLabel;
import java.awt.Insets;
public class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;
private JLabel jLabel = null;
private Frame2 meinFrame2 = null;
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("Neues Fenster");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if (meinFrame2 == null) {
meinFrame2 = new Frame2();
meinFrame2.setVisible(true);
meinFrame2.getEingabe();
jLabel.setText(meinFrame2.getEingabe());
meinFrame2.setVisible(false);
meinFrame2.dispose();
meinFrame2 = null;
}
}
});
}
return jButton;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MainFrame thisClass = new MainFrame();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
public MainFrame() {
super();
initialize();
}
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("MainFrame");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
gridBagConstraints1.gridy = 1;
jLabel = new JLabel();
jLabel.setText(" ");
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.insets = new Insets(5, 5, 5, 5);
gridBagConstraints.gridy = 0;
jContentPane = new JPanel();
jContentPane.setLayout(new GridBagLayout());
jContentPane.add(getJButton(), gridBagConstraints);
jContentPane.add(jLabel, gridBagConstraints1);
}
return jContentPane;
}
}
Frame2:
Java:
package post1;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JTextField;
import java.awt.GridBagConstraints;
import javax.swing.JButton;
import java.awt.Insets;
public class Frame2 extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextField jTextField = null;
private JButton jButton = null;
private String ausgabeText = "";
public Frame2() {
super();
initialize();
}
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Frame2");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
gridBagConstraints1.anchor = GridBagConstraints.EAST;
gridBagConstraints1.gridy = 1;
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new Insets(5, 5, 5, 5);
gridBagConstraints.gridx = 0;
jContentPane = new JPanel();
jContentPane.setLayout(new GridBagLayout());
jContentPane.add(getJTextField(), gridBagConstraints);
jContentPane.add(getJButton(), gridBagConstraints1);
}
return jContentPane;
}
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
}
return jTextField;
}
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("Ok");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
setEingabe(jTextField.getText());
}
});
}
return jButton;
}
private void setEingabe(String eingabe) {
ausgabeText = eingabe;
this.setVisible(false);
}
public String getEingabe() {
return ausgabeText;
}
}
Der Knackpunkt ist im MainFrame bei actionPerformed müsste bei
jLabel.setText(meinFrame2.getEingabe());
(Zeile 39) die Methode stoppen bis die Eingabe im Frame2 erfolgt ist.
Wenn ich aus dem Frame2 ein Dialog mache und es Modal setze funktioniert es korrekt.
Falls jemand ein ähnliches Problem mal hatte wäre ich für Lösungsansetze dankbar.
Gruß Valentin