dialogo JOptionPane con campo di testo modificabile e la lista
-
02-10-2019 - |
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.)
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