Połączenie między klasą a GUI

0

Witam,
Na wstępie chciałbym się przywitać, gdyż jestem tu nowy. Następnie chciałbym poprosić o pomoc w rozwiązaniu problemu (zapewne banalnego) ale z powodu niewielkiego stażu nie potrafię sobie z nim poradzić sam.

Jawy uczę się od niedawna w jednym kół zainteresowań i tam (specjalnie na potrzeby poznawania javy) tworzymy silnik do gry (prymitywna porównywarka bohaterów). Przechodzą do meritum, mam główną klasę Koloseum oraz klasę Arena (JFrame)
Chciałbym w GUI moc "zarządzać" moją klasą "Koloseum".
Tylko nie bardzo wiem jak... ;( Przejrzałem już kilkanaście wątków na forum i przestudiowałem kilka filmików na YT ale nie trafiłem na odpowiedni.

Dołączam kod:

klasa Koloseum

 
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Koloseum
{
	
	
	public static void main(String[] args) 
	{

		
		
		
		Scanner skan = new Scanner(System.in);		
		System.out.println("Podaj imie mezczyzny: ");
		String imieMezczyzny = skan.next();
		System.out.println("Podaj imie kobiety: ");
		String imieKobiety = skan.next();
		
		Kobieta k = new Kobieta(100, 10, 12, imieKobiety);
		Mezczyzna m = new Mezczyzna(100, 15, 8, imieMezczyzny);
		
		Random r = new Random();
		
		int losuj = r.nextInt(2);
		
		ArrayList <Postacie> w = new ArrayList<Postacie>();								//deklaracja ArrayLIst-w
		

			
		if(losuj == 0) 
			{
				w.add(k);
				w.add(m);
			} 
		else 
			{
				w.add(m);
				w.add(k);
			}
		
	
		
		while(!(k.czyZdech() || m.czyZdech()))
		{
			
			w.get(1).obrona(w.get(0).atak());
			w.get(0).obrona(w.get(1).atak());	
			System.out.println("---------------------");
			System.out.println(w.get(0).getImie() + " hp: " + w.get(0).getZycie() +"/"+w.get(0).getMaxZycie());
			System.out.println(w.get(1).getImie() + " hp: " + w.get(1).getZycie() +"/"+w.get(1).getMaxZycie());
			System.out.println("---------------------");
			
			
			try 
				{
					Thread.sleep(1500);
				} 
			catch (InterruptedException e) 
				{
					e.printStackTrace();
				}
		}
	
	skan.close();
		
	}
	
	

}

klasa Arena

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;


public class Arena extends JFrame {

	private JPanel contentPane;
	private JTextField textField;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Arena frame = new Arena();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	
	/**
	 * Create the frame.
	 */
	public Arena() {
		
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JButton btnPlay = new JButton("PLAY");
		btnPlay.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) 
			{
				
			}
		});
		btnPlay.setBounds(25, 12, 98, 26);
		contentPane.add(btnPlay);
		
		textField = new JTextField();
		textField.setBounds(35, 50, 371, 200);
		contentPane.add(textField);
		textField.setColumns(10);
	}
}
 

Ps. Jeśli popełniłem jakieś błędy, to proszę o wytknięcie mi ich;)
Z góry dziekuję

0

A ja nie wiem, jak rozumieć to zdanie:

Chciałbym w GUI moc "zarządzać" moją klasą "Koloseum".

Na pewno w klasie Koloseum zbyteczna jest metoda main.

0

No bo jak w konsoli podaję imię bohaterów i potem oni walczą ze sobą to to nazywam "zarządzaniem".
Dzięki za uwagę, sam tego nie zauważyłem.

W skrócie chciałbym aby GUI pobierał mi dane z Koloseum (chciałbym wczytać dane i móc je podać) i pobierał ArrayList z listą operacji, która wykonuje się w programie.

Ps. Po wywaleniu metody *main * Eclipse molestuje mnie, że nie ma głównej metody i sugeruje importować

javafx.application.Application

0

Jak te klasy mają współpracować (nadal nie wiem na czym ta współpraca ma polegać), to one nie mogą się znajdować w różnych programach. Muszą być w jednym programie, wtedy metoda main w jednej z tych klas jest zbyteczna. Chyba, że to nie ma współpraca "na bieżąco", wtedy mogą dwa programy, wymieniające informację np. za pośrednictwem pliku.

0

Dobra, inaczej.
Chodzi mi o to, ze jak odpalam GUI (Arena) to chciałbym aby w arenie wyświetlało mi się to co mi się wyświetla w konsoli Eclipse'owej, tj. program.
Czyli da się zrobić GUI w tej samej klasie i nie muszę tworzyć nowej klasy?

W takim razie uciekam do książek...

0

Błędny wniosek, to powinny być dwie klasy. Obie w jednym programie (w jednym projekcie).
Bliska znajomość z książkami na pewno Ci pomoże.

1 użytkowników online, w tym zalogowanych: 0, gości: 1