2013-07-01 4 views
0

Mon programme concerne un supermarché. Lorsque je compile le programme, les deux fenêtres JFrame 'f1' et 'f2' apparaissent à l'écran. Cependant, je veux que la fenêtre JFrame 'f1' apparaisse en premier, puis après avoir cliqué sur la fenêtre 'b1' de la fenêtre 'f1' de JButton, je veux que la fenêtre JFrame 'f2' arrive. Ci-dessous le mode de livraison() de mon programme:Comment faire apparaître une fenêtre JFrame uniquement après avoir appuyé sur le bouton JButton de la fenêtre JFrame précédente?

public static void delivery() 
{ 
    final JFrame f1 = new JFrame("Name"); 
    GridLayout grid = new GridLayout(20, 40, 10, 8); 
    f1.setLayout(grid); 
    f1.setVisible(true); 
    f1.setSize(600,200); 
    f1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    f1.setLocation(700,450); 

    JPanel p1 = new JPanel(); 

    final JLabel l1 = new JLabel("Enter your name: "); 

    final JTextField jt1 = new JTextField(20); 

    JButton b1 = new JButton("Ok"); 
    b1.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      input1 = jt1.getText(); 
      f1.dispose(); 
     } 
    }); 

    p1.add(b1); 
    p1.add(l1); 
    p1.add(jt1); 
    f1.add(p1); 

    final JFrame f2 = new JFrame("Address"); 
    f2.setVisible(true); 
    f2.setSize(600,200); 
    f2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    f2.setLocation(700,450); 

    JPanel p2 = new JPanel(); 

    final JLabel l2 = new JLabel("Enter your address: "); 

    final JTextField jt2 = new JTextField(20); 

    JButton b2 = new JButton("Ok"); 
    b2.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      input2 = jt2.getText(); 
      f2.dispose(); 
     } 
    }); 

    p2.add(b1); 
    p2.add(l2); 
    p2.add(jt2); 
    f2.add(p2); 

    JOptionPane.showMessageDialog(null, "The ordered stuff will be delivered to " +input1+ " who lives in: " +input2 , "Delivery" , JOptionPane.PLAIN_MESSAGE); 
    JOptionPane.showMessageDialog(null, "Thank you for shopping at Paradise 24/7. Hope to see you again." , "Shopping Done!" , JOptionPane.PLAIN_MESSAGE); 
} 
+0

Voir aussi [Utilisation de JFrames multiples, Bon/Mauvais Pratique?] (Http://stackoverflow.com/a/9554657/418556) –

Répondre

1

La ligne de code qui fait un cadre apparaît est ce

f1.setVisible(true); 

Vous avez ce pour les deux cadres au sein de votre mode de livraison.

Pour faire un apparaître après l'autre changement de cette façon que l'on obtient une valeur de visible et l'autre s'UNSET dans le code du bouton-à-dire (vous devrez évidemment déclarer f2 avant ce que)

b1.addActionListener(new ActionListener() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     input1 = jt1.getText(); 
     f1.dispose(); 
     //f1.setVisible(false); // or dispose if you no longer need it 
     f2.setVisible(true); 
    } 
}); 

Juste une suggestion: Une meilleure approche peut-être utiliser un JDialog. Cela vous permettra d'obtenir le formulaire d'entrée de l'utilisateur en attente de réponse, puis de demander l'entrée suivante. Click here for tutorial on Dialogs

Vous pouvez également regarder quelques dispositions lors de l'ajout de composants vos cadres/panneaux. GridLayout, BorderLayout, FlowLayout

+0

Je suis un débutant en Java. Je n'avais aucune idée de JFrame et d'ActionListener, mais j'ai réussi à l'apprendre via YouTube. Donc je ne connais pas vraiment Java. Je ne connais que les bases mêmes de celui-ci. – siddhu99

+1

@ siddhu99 Ensuite, je recommande de prendre le temps de lire [Java Tutorials] (http://docs.oracle.com/javase/tutorial/) et [Créer une interface graphique avec Swing] (http://docs.oracle. com/javase/tutoriel/uiswing /) – MadProgrammer

0

ajouter simplement le code f2.setVisible(true); dans actionPerformed() du bouton.

Par exemple.

f1.setBounds(whatever); 
f2.setBounds(whatever); 

//add button in JFrame and actionListener 
f1.setVisible(true); 
f2.setVisible(false); 

actionPerformed(ActionEvent e) 
{ 
    f2.setVisible(true); 
} 
0

Ensuite, vous devez lire JavaDocs d'abord et lire quelques bons ebooks pour Java Débutant comme Java 2 Complete Reference, O'Really - Java Swing sera utile pour vous

Questions connexes