мой код читает список людей и ищет в Интернете для них. по какой-то причине я не могу вернуться в правильном порядке. в первый раз, когда я нажимаю кнопку «вернуться», он всегда идет один раз дальше, и только второй клик делает то, что он должен.перейти через 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);
}
}
Возможно ли, что ваш слушатель дважды запускается для кнопки вниз и кнопки события? – gerrytan
Попробуйте уменьшить код до важных строк. См. [Mcve] (http://stackoverflow.com/help/mcve) и [sscce] (http://sscce.org/) – AbcAeffchen
извините его мой первый пост, я запомню его для своего следующего. –