2010-07-08 35 views
1

Je veux prendre à plusieurs reprises la saisie de l'utilisateur (probablement en utilisant un bouton) via un JOptionPane (déjà fait) et stocker les détails dans quelque chose (que diriez-vous d'un objet dynamique array) et affiche cette information sous la forme d'une liste dans un JList scrollable.Comment faire un JList déroulant pour ajouter des détails obtenu à partir d'un JOptionPane


MON CODE


import java.awt.GridLayout; 
import javax.swing.*; 

class Flight { 



public static void main(String[] args) { 

    //Panel 
    JPanel panel = new JPanel(new GridLayout(7, 2,20, 20)); 

    //Add textfields here 
    JTextField txtflightno = new JTextField(8); 
    JTextField txtmechanicalstatus = new JTextField(8); 
    JTextField txtmedicalstatus = new JTextField(8); 
    JTextField txtfuellevel = new JTextField(8); 
    JTextField txtweathercondition = new JTextField(8); 
    JTextField txtfrequency = new JTextField(8); 
    JTextField txtflightpath = new JTextField(8); 






    //Add labels here 
    JLabel lblflightno = new JLabel("Flight No : "); 
    JLabel lblmechanicalstatus = new JLabel("Mechanical Status:"); 
    JLabel lblmedicalstatus = new JLabel("Medical Status:"); 
    JLabel lblfuellevel = new JLabel("Fuel Level:"); 
    JLabel lblweathercondition = new JLabel("Weather Condition:"); 
    JLabel lblfrequency = new JLabel("Frequency:"); 
    JLabel lblflightpath = new JLabel("Flight Path:"); 





    //Adding flightno to panel 
    panel.add(lblflightno); 
    panel.add(txtflightno); 

    //Adding mechanicalstatus to the panel 
    panel.add(lblmechanicalstatus); 
    panel.add(txtmechanicalstatus); 

    //Adding medicalstatus to the panel 
    panel.add(lblmedicalstatus); 
    panel.add(txtmedicalstatus); 

    //Adding fuellevel to the panel 
    panel.add(lblfuellevel); 
    panel.add(txtfuellevel); 

    //Adding weathercondition to the panel 
    panel.add(lblweathercondition); 
    panel.add(txtweathercondition); 

    //Adding frequency to the panel 
    panel.add(lblfrequency); 
    panel.add(txtfrequency); 

    //Adding flightpath to the panel 
    panel.add(lblflightpath); 
    panel.add(txtflightpath); 


    panel.setBounds(0, 0, 800, 600); 




    int result = JOptionPane.showConfirmDialog(null, panel, "Flight Details", 
     JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); 
    if (result == JOptionPane.OK_OPTION) { 

    } 
} 
} 

Comment dois-je faire le stockage des informations d'avion? Comment dois-je implémenter un JList scrollable? Aucune suggestion.

Merci beaucoup

+0

Vous avez quelques bonnes réponses ici, donc vous devriez en marquer une comme acceptée. – BoffinbraiN

Répondre

6

Comme indiqué dans How to Use Lists, JList utilise un modèle de liste comme source de données qu'il affiche. Ajoutez simplement vos données à un DefaultListModel et utilisez-le pour construire votre liste.

DefaultListModel dlm = new DefaultListModel(); 
// add data 
JList list = new JList(dlm); 
panel.add(new JScrollPane(list)); 
4

Pour faire la JList scrollable, il suffit de l'intégrer dans un JScrollPane. Au lieu de

add(myList, constraints); 

do

add(new JScrollPane(myList), constraints); 

Pour étendre la liste, juste obtenir ListModel (en utilisant getListModel) du JList et utiliser add pour ajouter des objets.

Plus sur l'utilisation de ListModels in Sun's tutorial.

Plus sur ScrollPane in the Tutorial, aussi.

+0

vous voulez dire 'JScrollPane'? – instinct

+0

@SandeepPareek: Oups, oui. Corrigé, merci! –

0

Vous devez utiliser le ActionListener de Button, que vous avez manqué dans l'extrait de code.

Dans le OK Option:

JList jlist = ...; 

jlist.add(txtflightno.getText()); 
jlist.add(txtmechanicalstatus.getText()); 
jlist.add(txtmedicalstatus.getText()); 
.... 
.... 

& 

add(new JScrollPanel(myList), constraints); 

Après cette méthode utilisation de validation des composants pour mettre à jour la liste avec ce nouvel élément. Mais une chose dont vous devez vous souvenir est que cette liste affiche chaque élément par ligne. Je vous suggère d'utiliser JTable avec lequel vous pouvez afficher vos objets de manière significative ...

+0

codeur: Je ne vois pas où @Haxed a besoin d'un 'ActionListener'; le bouton OK de 'JOptionPane' devrait faire l'affaire. De même, 'JList' ne peut pas accepter les données directement; un 'ListModel' devrait être utilisé à la place. – trashgod