2012-01-13 10 views
21

Je développe actuellement une application Java.Comment faire une fenêtre PopUp en Java

Je souhaite afficher une nouvelle fenêtre contenant une zone de texte et un bouton.

Avez-vous des idées?

+4

Peut-être 'JOptionPane.showInputDialog (null," Ceci est le message "," Ceci est le texte par défaut ")'? – fireshadow52

+0

Veuillez marquer une réponse pour que cette question soit résolue. – Ungeheuer

Répondre

12

Hmm cela fait un peu de temps mais d'après ce dont je me souviens ...
Si vous voulez une fenêtre personnalisée, vous pouvez simplement faire un nouveau cadre et le faire apparaître comme vous le feriez avec la fenêtre principale. Java possède également une bibliothèque grande boîte de dialogue que vous pouvez consulter ici:

How to Make Dialogs

Cela peut être en mesure de vous donner la fonctionnalité que vous recherchez avec beaucoup moins d'effort.

Object[] possibilities = {"ham", "spam", "yam"}; 
String s = (String)JOptionPane.showInputDialog(
        frame, 
        "Complete the sentence:\n" 
        + "\"Green eggs and...\"", 
        "Customized Dialog", 
        JOptionPane.PLAIN_MESSAGE, 
        icon, 
        possibilities, 
        "ham"); 

//If a string was returned, say so. 
if ((s != null) && (s.length() > 0)) { 
    setLabel("Green eggs and... " + s + "!"); 
    return; 
} 

//If you're here, the return value was null/empty. 
setLabel("Come on, finish the sentence!"); 

Si vous ne se soucient pas de limiter les choix de l'utilisateur, vous pouvez utiliser une forme de la méthode showInputDialog qui prend moins d'arguments ou de spécifier null pour le tableau d'objets. Dans le regard Java et se sentent, en remplaçant nulle pour les résultats des possibilités dans une boîte de dialogue qui a un champ de texte et ressemble à ceci:

+0

Je pense que je veux faire le nouveau cadre pouvez-vous me montrer comment le faire thx btw? – Carlo

+0

L'exemple que je mets ci-dessus est à peu près aussi clair et concis que je peux obtenir pour vous montrer comment le faire. Si vous voulez le personnaliser au-delà de l'exemple, jetez un œil aux documents Java. – Prediluted

27

La même réponse: JOptionpane un exemple :)

package experiments; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class CreateDialogFromOptionPane { 

    public static void main(final String[] args) { 
     final JFrame parent = new JFrame(); 
     JButton button = new JButton(); 

     button.setText("Click me to show dialog!"); 
     parent.add(button); 
     parent.pack(); 
     parent.setVisible(true); 

     button.addActionListener(new java.awt.event.ActionListener() { 
      @Override 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       String name = JOptionPane.showInputDialog(parent, 
         "What is your name?", null); 
      } 
     }); 
    } 
} 

enter image description here

0
public class JSONPage { 
    Logger log = Logger.getLogger("com.prodapt.autotest.gui.design.EditTestData"); 


    public static final JFrame JSONFrame = new JFrame(); 
    public final JPanel jPanel = new JPanel(); 

    JLabel IdLabel = new JLabel("JSON ID*"); 
    JLabel DataLabel = new JLabel("JSON Data*"); 
    JFormattedTextField JId = new JFormattedTextField("Auto Generated"); 
    JTextArea JData = new JTextArea(); 
    JButton Cancel = new JButton("Cancel"); 
    JButton Add = new JButton("Add"); 

    public void JsonPage() { 

     JSONFrame.getContentPane().add(jPanel); 
     JSONFrame.add(jPanel); 
     JSONFrame.setSize(400, 250); 
     JSONFrame.setResizable(false); 
     JSONFrame.setVisible(false); 
     JSONFrame.setTitle("Add JSON Data"); 
     JSONFrame.setLocationRelativeTo(null); 
     jPanel.setLayout(null); 

     JData.setWrapStyleWord(true); 
     JId.setEditable(false); 

     IdLabel.setBounds(20, 30, 120, 25); 
     JId.setBounds(100, 30, 120, 25); 
     DataLabel.setBounds(20, 60, 120, 25); 
     JData.setBounds(100, 60, 250, 75); 
     Cancel.setBounds(80, 170, 80, 30); 
     Add.setBounds(280, 170, 50, 30); 

     jPanel.add(IdLabel); 
     jPanel.add(JId); 
     jPanel.add(DataLabel); 
     jPanel.add(JData); 
     jPanel.add(Cancel); 
     jPanel.add(Add); 

     SwingUtilities.updateComponentTreeUI(JSONFrame); 

     Cancel.addActionListener(new ActionListener() { 
      @SuppressWarnings("deprecation") 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       JData.setText(""); 
       JSONFrame.hide(); 
       TestCasePage.testCaseFrame.show(); 
      } 
     }); 

     Add.addActionListener(new ActionListener() { 
      @SuppressWarnings("deprecation") 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       try { 
        PreparedStatement pStatement = DAOHelper.getInstance() 
          .createJSON(
            ConnectionClass.getInstance() 
              .getConnection()); 
        pStatement.setString(1, null); 
        if (JData.getText().toString().isEmpty()) { 
         JOptionPane.showMessageDialog(JSONFrame, 
           "Must Enter JSON Path"); 
        } else { 
         // System.out.println(eleSelectBy); 
         pStatement.setString(2, JData.getText()); 
         pStatement.executeUpdate(); 
         JOptionPane.showMessageDialog(JSONFrame, "!! Added !!"); 
         log.info("JSON Path Added"+JData); 
         JData.setText(""); 
         JSONFrame.hide(); 
        } 

       } catch (SQLException e1) { 
        JData.setText(""); 
        log.info("Error in Adding JSON Path"); 
        e1.printStackTrace(); 
       } 
      } 
     }); 
    } 

} 
+7

hmm ... un peu à la limite de répondre à la question, n'est-ce pas ;-) En tout cas, a) s'il vous plaît apprendre les conventions de nommage java et s'y tenir b) ne jamais faire de dimensionnement/localisation des composants, c'est l'exclusivité tâche d'un LayoutManager approprié c) updateComponentTree n'est pas nécessaire – kleopatra

0

Essayez d'utiliser JOptionPane ou Swt Shell.

Questions connexes