Avatar billede tinaw25 Nybegynder
03. oktober 2014 - 11:08 Der er 3 kommentarer og
1 løsning

Vælge flere gange på dropDown

Hejsa

jeg er i gang med at lave et program hvor man i dropdown hvor man kan vælge hvilket hotel, og når man så vælger hvilket hotel skal der i mit textarea hvilken bookinger der findes .

Men jeg kan ikke vælge den der står øverst, så kommer den med et fejl at min arraylist er lig med null.

Men når jeg vælger nummer 2 kommer der de rigtige antal, og hvis jeg så vælger nr 1 på listen kommer det rigtige resultat men når jeg så vælger igen, bliver der lagt til min arraylist.

Hvordan tager man højde for at man ikke kender hvor mange gange brugeren vil køre rundt i ens dropdown liste.

Her er min kode for min GUI actionlistener:

public class MainGui implements ActionListener
{
    JFrame frame = new JFrame("Hotel Administration");
    JButton btnBook;
    JTextArea ta;
    JComboBox hotelList;
    getHotels readDB = new getHotels();
   
    readArray arrayReads = new readArray();
    readArray arrayReadsNew = new readArray();
   
    ArrayList<Hotels> list = new ArrayList<Hotels>(readDB.readFromDB());
   

    public MainGui() throws Exception
    {
        frame.setSize(1200, 600);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());

        // NORTH - JComboBox
        // JComboBox takes an Object Array as parameter.
        // The Object Array contains what you see in the drop down List
        // You need to get the hotel information in the hotelArr instead of the
        // strings "Test" ... etc
       
        //Object[] hotelArr = { "Test", "Test1", "Test2", "Test3", "Test4" };
        @SuppressWarnings({ "rawtypes", "unchecked" })
        // this just hide some unimportant warnings
        JComboBox hotelList = new JComboBox(list.toArray());
        hotelList.addActionListener(this);
        frame.add(hotelList, BorderLayout.NORTH);

        // CENTER - TextArea
       
       
        ta = new JTextArea();
        //ta.setText(bookingList.toString());
        frame.add(ta, BorderLayout.CENTER);

        // SOUTH - Button
        btnBook = new JButton("Register new Guest in the System");
        frame.add(btnBook, BorderLayout.SOUTH);
        btnBook.addActionListener(this);

        frame.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e)
    {
       
        String hotelName = "";
        JComboBox cb = (JComboBox)e.getSource();
       
        hotelName = (String)cb.getSelectedItem().toString();
       
                       
                        if(ta.getText().trim().length() == 0)
                        {
                            try {
                                ta.setText(arrayReads.readFromArrayBooking(hotelName));
                               
                               
                            } catch (SQLException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                            }
                        }
                        else
                        {
                           
                           
                            try {
                                ta.setText("");
                               
                               
                                ta.setText(arrayReadsNew.readFromArrayBooking(hotelName));
                               
                               
                            } catch (SQLException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                            }
                        }

   
    }
   

}

Her er koden for hvordan min metode får input fra databasen.

public class readArray
{
    getHotels fillArrays = new getHotels();
   
    ArrayList<Bookings> bList;
    ArrayList<Hotels> hList = new ArrayList<Hotels>();
    public ArrayList<Bookings> fillArrayBooking() throws SQLException
    {
       
        bList = new ArrayList<Bookings>(fillArrays.readFromDbBooking());
        return bList;
   
       
    }
   
    public String readFromArrayBooking(String hotelName) throws SQLException
    {
        String bListHotelNo = "";
       
        fillArrayBooking();
       
               
        for(Bookings b : bList)
        {
                   
            String a = b.getHotelNo() + " " + b.getHotelName() + " " + b.getCity() + "\n";
                       
            if(a.equals(hotelName))
            {
                            bListHotelNo += b.getHotelNo() + " " + b.getHotelName() + " " + b.getCity();
            }
                   
        }
               
       
        return bListHotelNo;
       
       
       
    }
}

Jeg håber nogle kan hjælpe for jeg kan ikke lige gennemskue hvordan jeg skal gøre videre. Hver gang jeg køre ind i metode igen så bliver der lagt 4 til min arraylist så den lige pludselig indeholder 8.

Mvh,

Tina
Avatar billede arne_v Ekspert
04. oktober 2014 - 02:56 #1
Jeg har meget svaert ved at se hvor der kunne blive tilfoejet til en liste i den kode.
Avatar billede tinaw25 Nybegynder
04. oktober 2014 - 18:25 #2
Mener du min dropdown liste?

Den bliver fyldt her
        JComboBox hotelList = new JComboBox(list.toArray());
Avatar billede tinaw25 Nybegynder
05. oktober 2014 - 13:56 #3
jeg har selv fundet løsningen
Avatar billede arne_v Ekspert
06. oktober 2014 - 04:42 #4
Godt. Fordi der var ikke noget i #2 som kunne forklare hvorfor listen vokser.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester