Java 在ArrayList中导航

Java 在ArrayList中导航,java,actionlistener,Java,Actionlistener,我的代码读取人员列表并在互联网上搜索他们。 由于某种原因,我无法按正确的顺序返回。我第一次按“返回”按钮时,它总是再按一次,只有第二次klick按它应该做的 代码编辑 对不起,英语不好,这是我的全部代码: import java.awt.BorderLayout; import java.awt.event.*; import java.io.*; import java.net.URI; import java.net.URISyntaxException; import java.util.

我的代码读取人员列表并在互联网上搜索他们。 由于某种原因,我无法按正确的顺序返回。我第一次按“返回”按钮时,它总是再按一次,只有第二次klick按它应该做的

代码编辑

对不起,英语不好,这是我的全部代码:

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);
    }
}
导入java.awt.BorderLayout;
导入java.awt.event.*;
导入java.io.*;
导入java.net.URI;
导入java.net.URISyntaxException;
导入java.util.*;
导入javax.swing.*;
公共类MainGui{
专用JTextField计数器;
私有JFrame;
私人ArrayList gastListe;
阿克图埃勒尔加斯蒂德私人酒店;
字符串名称;
字符串nachname;
字符串城市;
弦膜;
公共静态void main(字符串[]args){
MainGui=新的MainGui();
gui.los();
}
公共图书馆{
frame=新JFrame(“Arrival LookAPP v1.2”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel=新的JPanel();
JPanel textPanel=新的JPanel();
计数器=新的JTextField();
柜台设置文本(“00/00”);
JButton vorheigergast=新JButton(“”);
nächsterGast.addActionListener(新的nächsterGastListener());
gastListe=newarraylist();
textPanel.add(计数器);
textPanel.add(vorherigerGast);
textPanel.add(nächsterGast);
JMenuBar menüleiste=新JMenuBar();
JMenu menüDatei=新JMenu(“Datei”);
JMenuItem menüpunktladed=新JMenuItem(“装载”);
添加ActionListener(新的menüladenger());
menüDatei.add(menüpunktladed);
menüleiste.add(menüDatei);
框架:setJMenuBar(menüleiste);
frame.getContentPane().add(BorderLayout.CENTER,mainPanel);
frame.getContentPane().add(BorderLayout.SOUTH,textPanel);
框架。设置尺寸(750130);
frame.setAlwaysOnTop(真);
frame.setVisible(true);
}
公共字符串countIt(){
字符串c1=字符串.valueOf(Aktuellergastinex);
String c2=String.valueOf(gastListe.size());
字符串c=c1+“/”+c2;
返回c;
}
公共类Menüladenster实现ActionListener{
已执行的公共无效操作(操作事件ev){
JFileChooser dateiÖffnen=新的JFileChooser();
dateiÖffnen.setCurrentDirectory(新文件(“//T:/Rezeption/Night Auditor/Arrival LookApp/export”);
dateiÖffnen.showOpenDialog(框架);
试一试{
dateiLaden(dateiÖffnen.getSelectedFile());
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
公共类VorherigerGastListener实现ActionListener{
已执行的公共无效操作(操作事件ev){
vorherigenGastZeigen();
counter.setText(countIt());
}
}
公共类NächsterGastListener实现ActionListener{
已执行的公共无效操作(操作事件ev){
nächstenGastZeigen();
counter.setText(countIt());
}
}
公共无效nächstenGastZeigen(){
if(aktuellergastinex