2014-11-17 2 views
-2

мой код читает список людей и ищет в Интернете для них. по какой-то причине я не могу вернуться в правильном порядке. в первый раз, когда я нажимаю кнопку «вернуться», он всегда идет один раз дальше, и только второй клик делает то, что он должен.перейти через ArrayLists

код отредактирован

жаль плохой английский, вот весь мой код:

import java.awt.BorderLayout; 
import java.awt.event.*; 
import java.io.*; 
import java.net.URI; 
import java.net.URISyntaxException; 
import java.util.*; 

import javax.swing.*; 

public class MainGui { 
    private JTextField counter; 
    private JFrame frame; 
    private ArrayList<Gast> gastListe; 
    private int aktuellerGastIndex; 
    String vorname; 
    String nachname; 
    String city; 
    String firma; 

    public static void main(String[] args) { 
     MainGui gui = new MainGui(); 
     gui.los(); 
    } 

    public void los() { 
     frame = new JFrame("Arrival LookAPP v1.2"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel mainPanel = new JPanel(); 
     JPanel textPanel = new JPanel(); 
     counter = new JTextField(); 
     counter.setText("00/00");  
     JButton vorherigerGast = new JButton("<"); 
     vorherigerGast.addActionListener(new VorherigerGastListener()); 
     JButton nächsterGast = new JButton(">"); 
     nächsterGast.addActionListener(new NächsterGastListener()); 
     gastListe = new ArrayList<Gast>(); 
     textPanel.add(counter); 
     textPanel.add(vorherigerGast); 
     textPanel.add(nächsterGast); 
     JMenuBar menüleiste = new JMenuBar(); 
     JMenu menüDatei = new JMenu("Datei"); 
     JMenuItem menüPunktLaden = new JMenuItem("Laden"); 
     menüPunktLaden.addActionListener(new MenüLadenListener()); 
     menüDatei.add(menüPunktLaden); 
     menüleiste.add(menüDatei); 
     frame.setJMenuBar(menüleiste); 
     frame.getContentPane().add(BorderLayout.CENTER, mainPanel); 
     frame.getContentPane().add(BorderLayout.SOUTH, textPanel); 
     frame.setSize(750,130); 
     frame.setAlwaysOnTop(true); 
     frame.setVisible(true); 
    } 

    public String countIt() { 
     String c1 = String.valueOf(aktuellerGastIndex); 
     String c2 = String.valueOf(gastListe.size()); 
     String c = c1 + "/" + c2; 
     return c; 
    } 

    public class MenüLadenListener implements ActionListener { 
     public void actionPerformed(ActionEvent ev) { 
      JFileChooser dateiÖffnen = new JFileChooser(); 
      dateiÖffnen.setCurrentDirectory(new File("//T:/Rezeption/Night Auditor/Arrival LookApp/export")); 
      dateiÖffnen.showOpenDialog(frame); 
      try { 
       dateiLaden(dateiÖffnen.getSelectedFile()); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    } 


    public class VorherigerGastListener implements ActionListener { 
     public void actionPerformed(ActionEvent ev) { 
      vorherigenGastZeigen(); 
      counter.setText(countIt()); 
     } 
    } 

    public class NächsterGastListener implements ActionListener { 
     public void actionPerformed(ActionEvent ev) { 
      nächstenGastZeigen(); 
      counter.setText(countIt()); 
     } 
    } 

    public void nächstenGastZeigen() { 
     if (aktuellerGastIndex < gastListe.size()){ 
      aktuellerGast = gastListe.get(aktuellerGastIndex); 
      aktuellerGastIndex++; 
      System.out.println(aktuellerGastIndex + "/" + gastListe.size()); 
     } 
    } 

    public void vorherigenGastZeigen() { 
     if (aktuellerGastIndex < gastListe.size()){ 
      aktuellerGast = gastListe.get(aktuellerGastIndex); 
      System.out.println(aktuellerGastIndex); 
      aktuellerGastIndex--; 
     } 
    } 

    private void dateiLaden(File datei) { 
     aktuellerGastIndex = 0; 
     gastListe = new ArrayList<Gast>(); 
     try { 
      BufferedReader reader = new BufferedReader(new FileReader(datei)); 
      String zeile = null; 
        while ((zeile = reader.readLine()) != null) { 
         gastErstellen(zeile); 
        } 
        reader.close(); 
     } catch(Exception ex) { 
      System.out.println("konnte Karte nicht lesen"); 
      ex.printStackTrace(); 
     } 
     nächstenGastZeigen(); 
     counter.setText(countIt()); 
    } 

    private void gastErstellen(String zuParsendeZeile) { 
     String[] ergebnis = zuParsendeZeile.split("\""); 
     vorname= ""; 
     nachname=""; 
     city=""; 
     firma=""; 
     try { 
      vorname = ergebnis[1].toString(); 
      if (vorname.indexOf(" ") == -1) { 
      } else { 
       int io; 
       while(vorname.indexOf(" ") != -1) { 
        io = vorname.indexOf(" "); 
        vorname = vorname.substring(0,io) +"+"+ vorname.substring(io+1, vorname.length()); 
       } 
      } 
     } catch (Exception e1) {} 

     try { 
      nachname = ergebnis[3].toString(); 
      if (nachname.indexOf(" ") == -1) { 
      } else { 
       int io; 
       while(nachname.indexOf(" ") != -1) { 
        io = nachname.indexOf(" "); 
        nachname = nachname.substring(0,io) +"+"+ nachname.substring(io+1, nachname.length()); 
       } 
      } 
     } catch (Exception e1) {} 

     try { 
      city = ergebnis[5].toString(); 
      if (city.indexOf(" ") == -1) { 
      } else { 
       int io; 
       while(city.indexOf(" ") != -1) { 
        io = city.indexOf(" "); 
        city = city.substring(0,io) +"+"+ city.substring(io+1, city.length()); 
       } 
      } 
     } catch (Exception e) {} 

     try { 
      firma = ergebnis[7].toString(); 
      if (firma.indexOf(" ") == -1) { 
      } else { 
       int io; 
       while(firma.indexOf(" ") != -1) { 
        io = firma.indexOf(" "); 
        firma = firma.substring(0,io) +"+"+ firma.substring(io+1, firma.length()); 
       } 
      } 
     } catch (Exception e) {} 
     Gast gast = new Gast(vorname, nachname, city, firma); 
     gastListe.add(gast); 
    } 
} 
+0

Возможно ли, что ваш слушатель дважды запускается для кнопки вниз и кнопки события? – gerrytan

+0

Попробуйте уменьшить код до важных строк. См. [Mcve] (http://stackoverflow.com/help/mcve) и [sscce] (http://sscce.org/) – AbcAeffchen

+0

извините его мой первый пост, я запомню его для своего следующего. –

ответ

0

Когда openWebpage() называется, содержание aktuellerGast нулевые значения.

+0

openWebPage() отлично работает, я просто не могу правильно вернуться назад, когда VorherigerGastListener вызывает vorherigenGastZeigen(); он как-то прыгает вперед, а не обратно, каждый раз, когда я нажимаю его. индекс показывает правильные номера .. но он продолжает прыгать вперед –

Смежные вопросы