Ich hab da eine eine Frage (die zwar in meinem Fall eher Swing ist, aber doch eher zu den Grundlagen gehoert):
Ich habe eine Fenster, auf Knopfdruck wird ein neues Fenster geoffnet, dass einen Wert vom Benutzer einlesen soll, und diesen Anschliessend an Fenster 1 zurueckgibt.
Meine Frage ist:
Wie bekomme ich es hin, dass Fenster 2 den Eingelesenen Wert an Fenster 1 zurueckgibt?
Also:
Fenster 1 offen
Button von Fenster 1 Druecken
Fenster 2 offen
Fenster 2 bekommt wert, es wird OK gedrueckt
Fenster 2 schliesst sich und gibt wert an Fenster 1 zurueck.
mhh, also ich habe jetzt mal versucht, mein Fenster 2 in einen Dialog zu "verwandeln", allerdings isses wohl doch etwas schwieriger als gedacht.
Koennte mir jemand sagen, was ich falsch gemacht hab?
Java:
importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;importSearcher.Bridge;publicclassJobPopUp{privatestaticJDialog frame =null;privatestaticJLabel informationLabel =null;privatestaticJButton oKButton =null;privatestaticJTextField textField =null;publicstaticvoidmain(String[] args)throwsException{startPopUp(newBridge());}publicstaticvoidstartPopUp(Bridge bridge){
frame =newJDialog();
frame.setLayout(newBorderLayout());
frame.setSize(350,200);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);createTextField(frame);createInformationPanel();createOKButton(frame, bridge);
frame.move(680,0);
frame.setVisible(true);}privatestaticvoidcreateOKButton(finalJDialog frame2,Bridge bridge){
oKButton =newJButton("OK");
oKButton.setSize(50,550);
oKButton.setVisible(true);
oKButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvent event){Bridge.setJob(textField.getText());
frame2.dispose();}});
frame2.add(oKButton,BorderLayout.SOUTH);}privatestaticvoidcreateTextField(JDialog frame2){
textField =newJTextField();
textField.setVisible(true);
frame2.add(textField,BorderLayout.CENTER);}privatestaticvoidcreateInformationPanel(){
informationLabel =newJLabel("<HTML><BODY>Das Laden der Software kann "+"bis zu eine Minute Dauern!<BR> Bitte geben sie den Text ein.</BODY></HTML>");
informationLabel.setVisible(true);
frame.add(informationLabel,BorderLayout.NORTH);}}
Ich hatte mir gedacht, dass ich das Fenster mit der startPopUp() Methode aufrufe.
Bridge selbst wird fuer das Popup nicht benoetigt, das ist nur der Empfaenger der Daten, die das PopUp erhaelt.
hi, also ich weiß immernoch nicht so recht was du eig. machen willst, aber ich beziehe mich mal auf die vorredner und hoffe das ist das was du suchst, hier ein "kleines" beispiel:
Java:
JFrame frame =newJFrame("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel panel =newJPanel();finalJLabel label =newJLabel();JButton button =newJButton("Druecken");
button.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvent e){//Hier der Eingabedialog !!!! der Input vom Benuter wird in str gespiechert !String str =JOptionPane.showInputDialog(null,"Texteingabe : ","Überschrift",-1);
label.setText("Eingabe: "+ str);}});
panel.add(button);
panel.add(label);
frame.add(panel);
frame.setPreferredSize(newDimension(300,100));
frame.pack();
frame.setVisible(true);
also, ich will, dass Fenster 1, welches Fenster 2 ja aufruft, auf eine Bestatigung von Fenster 2 wartet, dass die Daten eingelesen worden sind. (so in der Art zumindest), und vorher NICHT weiterarbeitet.
Hi!
Wie schon gesagt suchst du wohl nach einem Modalen Dialog. Wenn du zB aus dem JFrame "fenster1" herraus (via Button oder wie auch immer), einen Dialog initialisierst, sollte das nicht so aussehen
Java:
JDialog dialog =newJDialog();
sondern so
Java:
JDialog dialog =newJDialog(fenster1,true);
Auf diese Weise wird fenster1 blockiert, solange der Dialog offen ist.