Witam :)
Jestem zupełnie początkujący jeżeli chodzi o programowanie. Od kilku tygodniu uczę się Javy (mój prierszwy kontakt z programowaniem), więc proszę o w miarę łopatologiczne wyjaśnienie problemu ;)
Chciałbym napisać prosty program który symuluje rzut dwoma kośćmi sześciennymi, z tym, że zamiast wyniku liczbowego ma wyświetlać krótki opis. Po prostu każdej ściance kości jest przypisana konkretna czynność - jest mi to potrzebne do gry karcianej do której zaginęły mi oryginalne kostki.
Poniżej zamieszczam kod, który stworzyłem. Na chwilę obecną działa to tak, że w polach tekstowych zamiast opisu wyświetlane są liczby. Natomiast same opisy są wyświetlane tylko w konsoli.
package _grafika;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Kostka extends JFrame implements ActionListener
{
private JLabel lKosc1, lKosc2;
private JTextField tfKosc1, tfKosc2;
private JButton bRzut, bWyjscie;
public Kostka()
{
setSize(340, 220);
setTitle("Race for the Galaxy: Gathering Storm");
setLayout(null);
lKosc1 = new JLabel("Kość 1:");
lKosc1.setBounds(20, 40, 80, 20);
add(lKosc1);
lKosc2 = new JLabel("Kość 2:");
lKosc2.setBounds(20, 80, 80, 20);
add(lKosc2);
tfKosc1 = new JTextField();
tfKosc1.setBounds(100, 40, 180, 20);
tfKosc1.setEditable(false);
add(tfKosc1);
tfKosc2 = new JTextField();
tfKosc2.setBounds(100, 80, 180, 20);
tfKosc2.setEditable(false);
add(tfKosc2);
bRzut = new JButton("Rzut");
bRzut.setBounds(20, 120, 120, 20);
add(bRzut);
bRzut.addActionListener(this);
bWyjscie = new JButton("Wyjście");
bWyjscie.setBounds(160, 120, 120, 20);
add(bWyjscie);
bWyjscie.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
Object zrodlo = e.getSource();
if (zrodlo == bWyjscie)
{
dispose();
}
else if (zrodlo == bRzut)
{
Double rzut1 = new Double(Math.round(Math.random() * 5 + 1));
Double wynik1 = rzut1;
if (wynik1 == 1)
{
System.out.println("Kopia");
} else if (wynik1 == 2)
{
System.out.println("Konsumpcja x2");
} else if (wynik1 == 3)
{
System.out.println("Akcja");
} else if (wynik1 == 4)
{
System.out.println("Sprzedaż");
} else if (wynik1 == 5)
{
System.out.println("Produkcja");
} else if (wynik1 == 6)
{
System.out.println("Kopia");
}
Double rzut2 = new Double(Math.round(Math.random() * 5 + 1));
Double wynik2 = rzut2;
if (wynik2 == 1)
{
System.out.println("Kopia");
} else if (wynik2 == 2)
{
System.out.println("Osadnictwo");
} else if (wynik2 == 3)
{
System.out.println("Rozwój");
} else if (wynik2 == 4)
{
System.out.println("Poszukiwanie");
} else if (wynik2 == 5)
{
System.out.println("Kopia");
} else if (wynik2 == 6)
{
System.out.println("Rozwój");
}
tfKosc1.setText(String.valueOf(wynik1));
tfKosc2.setText(String.valueOf(wynik2));
}
}
public static void main(String[] args)
{
Kostka aplikacja = new Kostka();
aplikacja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aplikacja.setVisible(true);
}
}
I tu pytanie - jak zrobić, żeby w polach tekstowych były wyświetlana opisy? Zakładam, że błąd tkwi w tych linijkach:
tfKosc1.setText(String.valueOf(wynik1));
tfKosc2.setText(String.valueOf(wynik2));