Hoe maak je een PopUp-venster in Java

Ik ben momenteel bezig met het ontwikkelen van een Java-toepassing.

Ik wil een nieuw venster tonen dat een tekstgebied en een knop bevat.

Heb je ideeën?


Antwoord 1, autoriteit 100%

Hetzelfde antwoord: JOptionpanemet een voorbeeld 🙂

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);
            }
        });
    }
}


Antwoord 2, autoriteit 32%

Hmm het is een tijdje geleden, maar van wat ik me herinner…
Als je een aangepast venster wilt, kun je gewoon een nieuw frame maken en het laten verschijnen net zoals je zou doen met het hoofdvenster.
Java heeft ook een geweldige dialoogbibliotheek die u hier kunt bekijken:

Dialogen maken

Dat kan je misschien de functionaliteit geven die je zoekt met veel minder moeite.

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!");

Als u de keuzes van de gebruiker niet wilt beperken, kunt u ofwel een vorm van de methode showInputDialog gebruiken die minder argumenten nodig heeft, of u kunt null opgeven voor de array van objecten. In de Java-look en feel resulteert het vervangen van null door mogelijkheden in een dialoogvenster met een tekstveld en ziet er als volgt uit:


Antwoord 3, autoriteit 11%

JOptionPane is je vriend: http://www.javalobby.org/java/forums /t19012.html


Antwoord 4, autoriteit 5%

Bekijk Swing Dialogs(voornamelijk gericht op JOptionPane, zoals vermeld door @mcfinnigan).


Antwoord 5

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();
                }
            }
        });
    }
}

Antwoord 6

Probeer JOptionPane of Swt Shellte gebruiken.

Other episodes