Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Erste Schritte2 User Interfaces für eine Anwendung
Hi leute wir müssen in der Schule ein Spiel programmieren
und das soll zwei user interfaces bekommen mal soll auswählen können ob es in der shell läuft also eine textbasierte ui oder ob die gui gestartet werden soll
if(showGui == true) {
Gui gui = new Gui();
} else {
Shell shell = new Shell();
}
Es geht hier dabei darum deine information anzuzeigen, dafür erstellst du einfach zwei verschiedenen Klassen "Gui"(Swing Client) und "Shell"(Konsole). Dabei hat die Ausgabe keinen Einfluss auf die Berechnungen.
Hier mal ein kurzes Beispiel, bei dem sowohl Eingaben über eine GUI als auch über eine Konsole gemacht werden können. (In Deinem Fall könnte man durch Abfrage in der Konsole oder sonst wo oder durch übergabe eines Parameters beim Programmaufruf unterscheiden was als UI "geöffnet" werden soll.
Der Controller bildet hier die zentrale Einheit, der alle "Funktionen" abbildet. Diese können aus den verschiedenen UIs aufgerufen werden. (Ähnlich wie z.B. ein ActionListener, den man an verschiedene Komponenten hängt) Auf ein Model habe ich hier mal verzichtet.
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class GuiConsoleDemo {
public static void main(String[] s) {
new GuiConsoleDemo();
}
public GuiConsoleDemo() {
Controller controller = new Controller();
new GUIView(controller);
new ConsoleView(controller);
}
class Controller {
public void setValue(Object value) {
System.out.println("Controller received value: " + value);
}
}
abstract class View {
private Controller controller;
public View(Controller controller) {
this.controller = controller;
}
public void doAnAction(Object value) {
System.out.println(this.getClass().getSimpleName() + " will call a conroller method");
controller.setValue(value);
}
}
class GUIView extends View{
public GUIView(Controller controller) {
super(controller);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20, 20, 100, 100);
final JTextField field = new JTextField();
JButton button = new JButton("Send");
frame.add(field, BorderLayout.NORTH);
frame.add(button, BorderLayout.SOUTH);
frame.setVisible(true);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doAnAction(field.getText());
}
});
}
}
class ConsoleView extends View {
public ConsoleView(Controller controller) {
super(controller);
Scanner scanner = new Scanner(System.in);
System.out.println("ready for reading from console...");
while(scanner.hasNext()) {
doAnAction(scanner.next());
}
}
}
}