代码之家  ›  专栏  ›  技术社区  ›  user

带有可编辑文本字段和列表的JoptionPane对话框

  •  1
  • user  · 技术社区  · 14 年前

    是否可以创建一个对话框,用户可以在其中从列表中选择值,也可以编辑文本? (类似于带有可编辑jComboBox的对话框。)

    3 回复  |  直到 14 年前
        1
  •  2
  •   Andrew Thompson    14 年前
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.*;
    
    class ShowBothInputs {
    
        public static void main(String[] args) {
    
            Runnable r = new Runnable() {
    
                public void run() {
                    String[] items = {
                        "Apple",
                        "Banana",
                        "Grape",
                        "Cherry"
                    };
    
                    // what was requested
                    EditableListPanel elp = new EditableListPanel(items);
                    JOptionPane.showMessageDialog(null, elp);
                    System.out.println( "EditableListPanel value: " + elp.getValue() );
    
                    // probably what this UI actually needs
                    JComboBox jcb = new JComboBox(items);
                    jcb.setEditable(true);
                    JOptionPane.showMessageDialog(null, jcb);
                    System.out.println( "JComboBox value: " + jcb.getSelectedItem() );
                }
            };
            SwingUtilities.invokeLater(r);
        }
    }
    
    class EditableListPanel extends JPanel {
    
        private JTextField value;
    
        EditableListPanel(String[] items) {
            super( new BorderLayout(5,5) );
    
            final JList list = new JList( items );
            list.addListSelectionListener( new ListSelectionListener(){
                    public void valueChanged(ListSelectionEvent lse) {
                        value.setText( (String)list.getSelectedValue() );
                    }
                } );
            add( list, BorderLayout.CENTER );
    
            value = new JTextField("", 20);
            add( value, BorderLayout.NORTH );
        }
    
        public String getValue() {
            return value.getText();
        }
    }
    
        2
  •  0
  •   npinti    14 年前

    JDialogs通常用于向用户显示通知。我认为如果你想要这样的行为,你必须创建一个简单的JFrame来满足你的需要。

        3
  •  0
  •   camickr    14 年前

    不确定“选择后编辑文本”是什么意思。

    但是,您可以使用joptionpane轻松创建一个简单的对话框。您可以将jpanel添加到选项窗格中。退房 Dialog Focus 更多信息。