public class Deck
{
JFrame frame;
JPanel deck, login, fragePanel, ranking;
CardLayout card;
JButton highscore, restart, play, exit, beenden;
int punkte=0;
String nutzername;
JLabel rankingLabel = new JLabel();
public Deck()
{
frame = new JFrame("Swing - Quiz");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
deck = new JPanel();
DerHandler handler = new DerHandler();
//Buttons erzeugen
play = new JButton("Play");
restart = new JButton("Restart");
restart.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
login = new Login();
card.show(deck, "Login");
}
});
play.addActionListener(handler);
exit = new JButton("Exit");
exit.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
beenden = new JButton("Beenden");
beenden.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
highscore = new JButton("Highscore");
highscore.addActionListener(handler);
//An dieser Stelle werden die anderen Panels erzeugt
login = new Login();
login.add(exit);
login.add(play);
ranking = new JPanel();
ranking.setLayout(new BoxLayout(ranking, BoxLayout.Y_AXIS));
ranking.add(rankingLabel);
rankingLabel.setHorizontalAlignment(SwingConstants.LEFT);
rankingLabel.setHorizontalTextPosition(SwingConstants.LEFT);
JPanel rankingButtons = new JPanel();
rankingButtons.add(restart);
rankingButtons.add(beenden);
ranking.add(rankingButtons);
fragePanel = new Fragen();
card = new CardLayout();
//Panels werden dem CardLayout zugefügt
deck.setLayout(card);
deck.add(login, "Login");
deck.add(fragePanel, "Fragen");
deck.add(ranking, "Ranking");
frame.add(deck);
frame.setVisible(true);
frame.pack();
}
public class Fragen extends JPanel
{
ArrayList<String> fragen;
ArrayList<String> antwort;
ArrayList<String> f1,f2,f3;
JButton b1,b2,b3,b4;
JLabel frage;
JPanel br1, br2;
ArrayList<JButton> buttons;
JButton rAntwort;
public Fragen()
{
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
frage = new JLabel();
fragen = new ArrayList<String>();
fragen.add("Wie viele Pflanzen stehen bei Sabrina?");
fragen.add("Wie heißt der Hund von Ralf Weinmann?");
fragen.add("Welche Farbe hat das cortility Logo (Außer schwarz)?");
antwort = new ArrayList<String>();
antwort.add("8");
antwort.add("Zoey");
antwort.add("magenta");
f1 = new ArrayList<String>();
f1.add("5");
f1.add("Martha");
f1.add("gelb");
f2 = new ArrayList<String>();
f2.add("3");
f2.add("Marley");
f2.add("blau");
f3 = new ArrayList<String>();
f3.add("6");
f3.add("Bello");
f3.add("Es ist nur schwarz.");
b1 = new JButton();
b2 = new JButton();
b3 = new JButton();
b4 = new JButton();
buttons = new ArrayList<JButton>();
buttons.add(b1);
buttons.add(b2);
buttons.add(b3);
buttons.add(b4);
zuordnen();
br1 = new JPanel();
br2 = new JPanel();
this.add(frage);
this.add(br1);
this.add(br2);
br1.add(b1);
br1.add(b2);
br2.add(b3);
br2.add(b4);
/*this.add(buttons.get(0));
this.add(buttons.get(1));
this.add(rAntwort);
this.add(buttons.get(2));*/
}
public void zuordnen()
{
DerHandler handler = new DerHandler();
int random = (int) (Math.random()*3);
int frageRandom = (int) (Math.random()*3);
String antwort1 = antwort.get(frageRandom);
antwort.remove(frageRandom);
String falsch1 = f1.get(frageRandom);
f1.remove(frageRandom);
String falsch2 = f2.get(frageRandom);
f2.remove(frageRandom);
String falsch3 = f3.get(frageRandom);
f3.remove(frageRandom);
String frageTitel = fragen.get(frageRandom);
fragen.remove(frageRandom);
frage.setText(frageTitel);
rAntwort = buttons.get(random);
buttons.remove(random);
rAntwort.setText(antwort1);
buttons.get(0).setText(falsch1);
buttons.get(1).setText(falsch2);
buttons.get(2).setText(falsch3);
rAntwort.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
deck.remove(fragePanel);
fragePanel = new Fragen();
deck.add(fragePanel, "Fragen");
card.show(deck, "Fragen");
punkte++; //schon mit einem getter/setter ausprobiert, passiert das gleiche
rankingLabel.setText(login.getNutzer() + punkte); //Hier findet es die methode nicht
}
});
for (int i=0; i<buttons.size(); i++)
{
buttons.get(i).addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
//Auch wenn ich in dieser Methode den Punktestand überschreibe, wird 0 ausgegeben
rankingLabel.setText(login.getNutzer() + punkte);//Hier findet es die methode nicht
card.show(deck, "Ranking");
}
});
}
}
}
public class DerHandler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent event)
{
if (event.getSource()== highscore)
{
card.show(deck, "Ranking");
}
else if (event.getSource()== play)
{
card.show(deck, "Fragen");
}
}
}
}