Domanda

E 'possibile creare una finestra di dialogo in cui l'utente può selezionare i valori da una lista, ma anche in grado di modificare il testo? (Qualcosa di simile a una finestra con una JComboBox modificabile.)

È stato utile?

Soluzione

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

Altri suggerimenti

JDialogs sono di solito utilizzati per le notifiche di visualizzazione per l'utente. Penso che se si vuole un comportamento del genere si dovrà creare un semplice JFrame che fa quello che è necessario.

Non sei sicuro di cosa si intende per "modificare il testo dopo la selezione".

Tuttavia, si può facilmente creare una semplice finestra di dialogo utilizzando un JOptionPane. È possibile aggiungere un JPanel al riquadro 'opzione. Scopri Dialog fuoco per ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top