Создание всплывающего окна с несколькими кнопками - PullRequest
1 голос
/ 31 октября 2011

Я пытаюсь использовать Java для создания всплывающего поля ввода с несколькими параметрами, но я не знаю, какой самый простой способ сделать это. В настоящее время, когда я нажимаю на кнопку в моем графическом интерфейсе, это то, что он делает:

public class LoadListAction implements ActionListener{
    public void actionPerformed(ActionEvent e){
        Object result = JOptionPane.showInputDialog(f, "Test:");      
    }
}

однако, это только дает мне варианты ОК и Отмена. Я хотел бы иметь всплывающее окно с опцией 1 и 2 и делать разные вещи с тем, что находится в поле ввода, в зависимости от того, какая кнопка нажата.

Может кто-нибудь помочь?

РЕДАКТИРОВАТЬ: Я пытался использовать JDialog, но кажется, что я не могу получить как поле ввода, а также несколько кнопок, чтобы нажать (или, по крайней мере, я не знаю, как).

Ответы [ 3 ]

3 голосов
/ 31 октября 2011

Вы должны попробовать JDialog .

JDialog может содержать несколько кнопок, текстовых полей, комбинированных списков и т. Д. Как в JFrame или JPanel.

1 голос
/ 31 октября 2011

Я хотел бы иметь всплывающее окно с опцией 1 и 2 и выполнять разные действия с тем, что находится в поле ввода, в зависимости от того, какая кнопка нажата.

JOptionPane не поддерживает то, что вы хотите, потому что у вас запутанный дизайн, которого следует избегать.

Звучит так, будто вы хотите, чтобы пользователь вводил значения типа "a, b, с ".Затем пользователь нажимает на кнопки «1, 2, 3».Тогда другая обработка приведет к a1, a2, a3, b1, b2, b3, c1, c2, c3.

Не очень хороший дизайн.Кроме того, всплывающее окно должно иметь либо несколько значений ввода и кнопку «ОК / Отмена», либо одно значение ввода и несколько кнопок для нажатия.

1 голос
/ 31 октября 2011

В JDialog вы можете использовать add () , чтобы добавить столько компонентов, сколько вам нужно! Как вы можете видеть здесь , вы можете использовать множество методов, унаследованных от Container и Component в JDialog. yayy!

Это фрагмент копирования и вставки из одной из моих программ, надеюсь, вы сможете получить что-нибудь из этого:


jDialog1.setTitle("New Customer");
        jDialog1.setBounds(new java.awt.Rectangle(50, 50, 1092, 638));

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel2.setText("New Customer Details");

        jLabel3.setText("Name : ");

        jLabel4.setText("Address Line 1 : ");

        jLabel5.setText("Address Line 2 : ");

        jLabel6.setText("Address Line 3 : ");

        jLabel7.setText("Phone No : ");

        jLabel9.setText("Type of Customer : ");

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ORDINARY", "PREVILEGED" }));

        jButton6.setText("ADD CUSTOMER");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });

        jButton7.setText("REFRESH");
        jButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton7ActionPerformed(evt);
            }
        });

        jButton8.setText("CANCEL");
        jButton8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton8ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane());
        jDialog1.getContentPane().setLayout(jDialog1Layout);
        jDialog1Layout.setHorizontalGroup(
            jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jSeparator2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 1092, Short.MAX_VALUE)
            .addGroup(jDialog1Layout.createSequentialGroup()
                .addGap(438, 438, 438)
                .addComponent(jLabel2)
                .addContainerGap(502, Short.MAX_VALUE))
            .addGroup(jDialog1Layout.createSequentialGroup()
                .addGap(228, 228, 228)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel4)
                    .addComponent(jLabel3)
                    .addComponent(jLabel5)
                    .addComponent(jLabel6)
                    .addComponent(jLabel7)
                    .addComponent(jLabel9))
                .addGap(18, 18, 18)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jDialog1Layout.createSequentialGroup()
                        .addComponent(jButton6)
                        .addGap(80, 80, 80)
                        .addComponent(jButton7)
                        .addGap(69, 69, 69)
                        .addComponent(jButton8)
                        .addContainerGap())
                    .addGroup(jDialog1Layout.createSequentialGroup()
                        .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
                            .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
                            .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
                            .addComponent(jTextField4, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
                            .addComponent(jTextField5, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE))
                        .addGap(342, 342, 342))))
        );
        jDialog1Layout.setVerticalGroup(
            jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jDialog1Layout.createSequentialGroup()
                .addGap(32, 32, 32)
                .addComponent(jLabel2)
                .addGap(18, 18, 18)
                .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(75, 75, 75)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(32, 32, 32)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(36, 36, 36)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(33, 33, 33)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel6)
                    .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(32, 32, 32)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel7)
                    .addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(36, 36, 36)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel9)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 119, Short.MAX_VALUE)
                .addGroup(jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton6)
                    .addComponent(jButton8)
                    .addComponent(jButton7))
                .addGap(55, 55, 55))
        );
...