To jest przykładowy kod. Z Menu moge przejść do LosujDane, WczytajPlik lub do WprowadzDane a z nich mogę przejść do WyswietlWynik.
Najłatwiej by było umieścić wszystko w jednej klasie wtedy nie miałbym tego problemy ale kod byłby mniej czytelny.
Kopiuj
public class Menu {
JFrame frame;
JPanel panel, wprowadzDane, losujDane, wczytajPlik;
int stanProgramu = 0;
public Menu() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(0, 0, 640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
panel = new JPanel();
panel.setBounds(0, 0, 624, 441);
frame.getContentPane().add(panel);
panel.setLayout(null);
JButton btnWprowadDane = new JButton("Wprowad\u017A dane");
btnWprowadDane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
wprowadzDane();
}
});
btnWprowadDane.setBounds(238, 174, 130, 23);
panel.add(btnWprowadDane);
JButton btnLosujDane = new JButton("Losuj dane");
btnLosujDane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
losujDane();
}
});
btnLosujDane.setBounds(238, 208, 130, 23);
panel.add(btnLosujDane);
JButton btnNewButton = new JButton("Czytaj z pliku");
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
czytajZPliku();
}
});
btnNewButton.setBounds(238, 242, 130, 23);
panel.add(btnNewButton);
JLabel lblAlgorytmJohnsonaDla = new JLabel("Algorytm Johnsona dla trzech maszyn");
lblAlgorytmJohnsonaDla.setBounds(157, 98, 308, 20);
panel.add(lblAlgorytmJohnsonaDla);
lblAlgorytmJohnsonaDla.setFont(new Font("Tahoma", Font.BOLD, 16));
}
void wprowadzDane() {
wprowadzDane = new WprowadzDane(this);
frame.remove(panel);
frame.getContentPane().add(wprowadzDane);
frame.revalidate();
frame.repaint();
stanProgramu = 2;
}
void losujDane() {
losujDane = new LosujDane(this);
frame.remove(panel);
frame.getContentPane().add(losujDane);
frame.revalidate();
frame.repaint();
stanProgramu = 3;
}
void czytajZPliku() {
wczytajPlik = new WczytajPlik(this);
frame.remove(panel);
frame.getContentPane().add(wczytajPlik);
frame.revalidate();
frame.repaint();
stanProgramu = 4;
}
void wyswietlWynik(Zadanie[] maszynaPierwsza, Zadanie[] maszynaDruga, Zadanie[] maszynaTrzecia, int ileZadan) {
JPanel wyswietlWynik = new WyswietlWynik(this, maszynaPierwsza, maszynaDruga, maszynaTrzecia, ileZadan);
switch(stanProgramu) {
case 2: frame.remove(wprowadzDane); break;
case 3: frame.remove(losujDane); break;
case 4: frame.remove(wczytajPlik); break;
}
frame.getContentPane().add(wyswietlWynik);
frame.revalidate();
frame.repaint();
}
}
Kopiuj
public class LosujDane extends JPanel {
private static final long serialVersionUID = -5236301615653139342L;
JComboBox<Integer> comboBox;
Zadanie[] maszynaPierwsza;
Zadanie[] maszynaDruga;
Zadanie[] maszynaTrzecia;
JLabel label, label_2, label_4;
String dane1 = "", dane2 = "", dane3 = "";
Random generator = new Random();
Menu menu;
int ileZadan;
public LosujDane(Menu m) {
menu = m;
setAutoscrolls(true);
setBounds(new Rectangle(0, 0, 624, 441));
setLayout(null);
JLabel lblNewLabel = new JLabel("Losuj dane:");
lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 16));
lblNewLabel.setBounds(192, 35, 166, 20);
add(lblNewLabel);
Integer[] iloscZadan = {2,3,4,5,6,7,8,9,10,15,20};
comboBox = new JComboBox<Integer>();
comboBox.setModel(new DefaultComboBoxModel<Integer>(iloscZadan));
comboBox.setBounds(118, 73, 42, 20);
add(comboBox);
JLabel lblNewLabel_1 = new JLabel("Ilo\u015B\u0107 zada\u0144:");
lblNewLabel_1.setBounds(43, 76, 108, 14);
add(lblNewLabel_1);
JButton btnGeneruj = new JButton("Generuj");
btnGeneruj.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
generuj();
}
});
btnGeneruj.setBounds(53, 104, 89, 23);
add(btnGeneruj);
JLabel lblWylosowaneDaneDla = new JLabel("Wylosowane dane dla pierwszej maszyny:");
lblWylosowaneDaneDla.setBounds(43, 163, 502, 14);
add(lblWylosowaneDaneDla);
label = new JLabel("");
label.setBounds(43, 188, 502, 14);
add(label);
JLabel lblWylosowaneDaneDla_1 = new JLabel("Wylosowane dane dla drugiej maszyny:");
lblWylosowaneDaneDla_1.setBounds(43, 213, 502, 14);
add(lblWylosowaneDaneDla_1);
label_2 = new JLabel("");
label_2.setBounds(43, 238, 502, 14);
add(label_2);
JLabel lblWylosowaneDaneDla_2 = new JLabel("Wylosowane dane dla trzeciej maszyny:");
lblWylosowaneDaneDla_2.setBounds(43, 263, 502, 14);
add(lblWylosowaneDaneDla_2);
label_4 = new JLabel("");
label_4.setBounds(43, 288, 502, 14);
add(label_4);
JButton btnZatwierd = new JButton("Zatwierd\u017A");
btnZatwierd.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
zatwierdz();
}
});
btnZatwierd.setBounds(43, 339, 108, 23);
add(btnZatwierd);
}
void generuj() {
ileZadan = (Integer)comboBox.getSelectedItem();
maszynaPierwsza = new Zadanie[ileZadan+1];
maszynaDruga = new Zadanie[ileZadan+1];
maszynaTrzecia = new Zadanie[ileZadan+1];
for(int i = 1; i<=ileZadan; i++) {
maszynaPierwsza[i]=new Zadanie(i,generator.nextInt(5)+1);
}
for(int i = 1; i<=ileZadan; i++) {
maszynaTrzecia[i]=new Zadanie(i,generator.nextInt(5)+1);
}
for(int i = 1; i<=ileZadan; i++) {
int l;
if(maszynaPierwsza[i].wartosc>=maszynaTrzecia[i].wartosc) {
l = generator.nextInt(maszynaPierwsza[i].wartosc)+1;
}
else {
l = generator.nextInt(maszynaTrzecia[i].wartosc)+1;
}
maszynaDruga[i]=new Zadanie(i,l);
}
dane1 = "";
dane2 = "";
dane3 = "";
for(int i = 1; i<=ileZadan; i++) {
dane1 = dane1+maszynaPierwsza[i].wartosc+";";
}
label.setText(dane1);
for(int i = 1; i<=ileZadan; i++) {
dane2 = dane2+maszynaDruga[i].wartosc+";";
}
label_2.setText(dane2);
for(int i = 1; i<=ileZadan; i++) {
dane3 = dane3+maszynaTrzecia[i].wartosc+";";
}
label_4.setText(dane3);
}
void zatwierdz() {
menu.wyswietlWynik(maszynaPierwsza, maszynaDruga, maszynaTrzecia, ileZadan);
}
}