Package

Source Code of GUI

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;

public class GUI {
  // Klasa wyswietlajaca cale GUI, nie rysuje symulacji
  // 28 kwietnia-dodano listenera do "uruchom symulacje"---linijka 486-500
  // 28 kwietnia-zamiana modyfikatora symulacji na final---linijka 441
  // 29 kwietnia-Symulacja wy�wietlanie informacji panel---linijka 443
  // Deklaracja zmiennych oraz stalych uzywanych globalnie w gui
  JFrame mainframe;
  JPanel opispanel;
  JPanel ustawieniapanel;
  JPanel symulacja_panel;
  JMenuBar mb;
  JTabbedPane tabpane;
  FileLoader loader = new FileLoader();
  String file_name="mhj.ust";
  int wybor=1;
  String[] algorithm_list = new String[4];
  protected static final int fwidth = 1000;
  protected static final int fheight = 750;
  boolean accepted_settings = false;
  Planeta lista_planet[] = new Planeta[5];
  public GUI() {
    //
    Image ship = null;
    try {
      ship = ImageIO.read(new File("ship.jpg"));
    } catch (IOException e1) {
    }
    mainframe = new JFrame();
    mainframe.setSize(fwidth, fheight);
    mainframe.setResizable(false);
    mainframe.setTitle("Symulacja lotu statku kosmicznego");
    mainframe.setIconImage(ship);
    opispanel = new JPanel();
    ustawieniapanel = new JPanel();
    symulacja_panel = new JPanel();
    tabpane = new JTabbedPane();
    GridBagLayout gbl = new GridBagLayout();
    algorithm_list[0] = "Metoda Hooka-Jeevesa"; // Odpowiada za ni� Anna
                          // Tomaszewska
    algorithm_list[1] = "Metoda Newtona"; // Odpowiada za ni� Bartosz
                        // Wyspia�ski
    algorithm_list[2] = "Metoda Neldera i Maeda"; // Odpowiada za ni� Damian
                            // Popadycz
    algorithm_list[3] = "Bez metody optymalizacji";

    // OPIS
    opispanel.setBackground(Color.white);
    // Tworzenie EditorPane
    JEditorPane editorPane = new JEditorPane();
    editorPane.setEditable(false);
    java.net.URL helpURL = GUI.class.getResource("opis.html");
    if (helpURL != null) {
      try {
        editorPane.setPage(helpURL);
      } catch (IOException e) {
        System.err.println("Attempted to read a bad URL: " + helpURL);
      }
    } else {
      System.err.println("Couldn't find file: TextSamplerDemoHelp.html");
    }

    // Wklada EditorPane do JScrollPane
    JScrollPane editorScrollPane = new JScrollPane(editorPane);
    editorScrollPane
        .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    editorScrollPane.setPreferredSize(new Dimension(1000, 750));
    editorScrollPane.setMinimumSize(new Dimension(10, 10));
    //
    opispanel.add(editorScrollPane);
    tabpane.addTab("Opis", null, opispanel, "Opis");
    tabpane.setMnemonicAt(0, KeyEvent.VK_1);

    // USTAWIENIA
    ustawieniapanel.setLayout(gbl);
    ustawieniapanel.setBackground(Color.white);
    // DEKLARACJA ELEMENTOW GUI DLA USTAWIEN
    JLabel algorithm_label = new JLabel("Wybierz metod� optymalizacji: ");
    JLabel planeta1_label = new JLabel("Planeta nr1");
    JLabel planeta2_label = new JLabel("Planeta nr2");
    JLabel planeta3_label = new JLabel("Planeta nr3");
    JLabel planeta4_label = new JLabel("Planeta nr4");
    JLabel planeta5_label = new JLabel("Planeta nr5");
    //
    JLabel x_label = new JLabel("Wsp. X");
    JLabel y_label = new JLabel("Wsp. Y");
    JLabel m_label = new JLabel("Masa");
    //
    final JTextField planeta1_x = new JTextField("", 30);
    final JTextField planeta1_y = new JTextField("", 30);
    final JTextField planeta1_m = new JTextField("", 30);
    //
    final JTextField planeta2_x = new JTextField("", 30);
    final JTextField planeta2_y = new JTextField("", 30);
    final JTextField planeta2_m = new JTextField("", 30);
    //
    final JTextField planeta3_x = new JTextField("", 30);
    final JTextField planeta3_y = new JTextField("", 30);
    final JTextField planeta3_m = new JTextField("", 30);
    //
    final JTextField planeta4_x = new JTextField("", 30);
    final JTextField planeta4_y = new JTextField("", 30);
    final JTextField planeta4_m = new JTextField("", 30);
    //
    final JTextField planeta5_x = new JTextField("", 30);
    final JTextField planeta5_y = new JTextField("", 30);
    final JTextField planeta5_m = new JTextField("", 30);
    //
    JLabel statek_m_label = new JLabel("Masa statku");
    final JTextField statek_m = new JTextField("", 30);
    //
    JLabel statek_v_label = new JLabel("Predkosc poczatkowa");
    final JTextField statek_v = new JTextField("", 30);
    //
    statek_m.setEditable(false);
    statek_v.setEditable(false);
    //
    JLabel stala_grawitacji_label = new JLabel("Stala grawitacji");
    JTextField stala_grawitacji = new JTextField("", 30);
    stala_grawitacji.setText("" + Silnik.G);
    //
    JLabel cel_label = new JLabel("Cel");
    JLabel cel_x_label = new JLabel("Wsp. X");
    JLabel cel_y_label = new JLabel("Wsp. Y");
    final JTextField cel_x = new JTextField("", 30);
    final JTextField cel_y = new JTextField("", 30);
    //
    JButton accept_settings = new JButton("Zaakceptuj ustawienia");
    //
    accept_settings.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        accepted_settings = true;
       
        lista_planet[0] = new Planeta(Integer.parseInt(planeta1_x
            .getText()), Integer.parseInt(planeta1_y.getText()),
            Double.parseDouble(planeta1_m.getText()));
        lista_planet[1] = new Planeta(Integer.parseInt(planeta2_x
            .getText()), Integer.parseInt(planeta2_y.getText()),
            Double.parseDouble(planeta2_m.getText()));
        lista_planet[2] = new Planeta(Integer.parseInt(planeta3_x
            .getText()), Integer.parseInt(planeta3_y.getText()),
            Double.parseDouble(planeta3_m.getText()));
        lista_planet[3] = new Planeta(Integer.parseInt(planeta4_x
            .getText()), Integer.parseInt(planeta4_y.getText()),
            Double.parseDouble(planeta4_m.getText()));
        lista_planet[4] = new Planeta(Integer.parseInt(planeta5_x
            .getText()), Integer.parseInt(planeta5_y.getText()),
            Double.parseDouble(planeta5_m.getText()));
        Punkt punkt = new Punkt(Integer.parseInt(cel_x.getText()),
              Integer.parseInt(cel_y.getText()));
        Silnik.acceptSettings(punkt, 0, 0);
        symulacja_panel.updateUI();

      }

    });
    //
    JButton load_default_settings = new JButton(
        "Wczytaj domyslne ustawienia dla problemu");
    load_default_settings.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        loader.loadFile(file_name);
        //
        planeta1_x.setText(loader.planeta1_x);
        planeta1_y.setText(loader.planeta1_y);
        planeta1_m.setText(loader.planeta1_m);
        //
        planeta2_x.setText(loader.planeta2_x);
        planeta2_y.setText(loader.planeta2_y);
        planeta2_m.setText(loader.planeta2_m);
        //
        planeta3_x.setText(loader.planeta3_x);
        planeta3_y.setText(loader.planeta3_y);
        planeta3_m.setText(loader.planeta3_m);
        //
        planeta4_x.setText(loader.planeta4_x);
        planeta4_y.setText(loader.planeta4_y);
        planeta4_m.setText(loader.planeta4_m);
        //
        planeta5_x.setText(loader.planeta5_x);
        planeta5_y.setText(loader.planeta5_y);
        planeta5_m.setText(loader.planeta5_m);
        //
        cel_x.setText(loader.cel_x);
        cel_y.setText(loader.cel_y);
        //
        statek_m.setText(loader.statek_m);
        statek_v.setText(loader.statek_v);
        //
      }

    });
    final JComboBox algorithm_box = new JComboBox(algorithm_list);
    algorithm_box.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        String choose = (String) algorithm_box.getSelectedItem();
        if (choose.equals("Metoda Hooka-Jeevesa")) {
          wybor=1;
          file_name="mhj.ust";
        } else {
          if (choose.equals("Metoda Newtona")) {
            wybor=2;
            file_name="mne.ust";
          } else if (choose.equals("Metoda Neldera i Maeda")) {
            wybor=3;
            file_name="mnm.ust";
          } else {
            wybor=4;
          }
        }
      }
    });
    // DODAWANIE ELEMENTOW DO PANELU PRZY URZYCIU GRID_BAG_LAYOUT
    GridBagConstraints gbcu = new GridBagConstraints();
    gbcu.weightx = 111;
    gbcu.weighty = 53;
    //
    gbcu.gridwidth = 1;
    gbcu.gridheight = 1;
    //
    gbcu.gridx = 0;
    gbcu.gridy = 0;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(algorithm_label, gbcu);
    //
    gbcu.gridx = 1;
    gbcu.gridy = 0;
    ustawieniapanel.add(algorithm_box, gbcu);
    //
    gbcu.gridx = 1;
    gbcu.gridy = 1;
    ustawieniapanel.add(x_label, gbcu);
    //
    gbcu.gridx = 2;
    gbcu.gridy = 1;
    ustawieniapanel.add(y_label, gbcu);
    //
    gbcu.gridx = 3;
    gbcu.gridy = 1;
    ustawieniapanel.add(m_label, gbcu);
    //
    gbcu.gridx = 4;
    gbcu.gridy = 1;
    ustawieniapanel.add(statek_m_label, gbcu);
    //
    gbcu.gridx = 6;
    gbcu.gridy = 1;
    ustawieniapanel.add(cel_x_label, gbcu);
    //
    gbcu.gridx = 7;
    gbcu.gridy = 1;
    ustawieniapanel.add(cel_y_label, gbcu);
    //
    gbcu.gridx = 0;
    gbcu.gridy = 2;
    ustawieniapanel.add(planeta1_label, gbcu);
    //
    gbcu.gridx = 1;
    gbcu.gridy = 2;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta1_x, gbcu);
    //
    gbcu.gridx = 2;
    gbcu.gridy = 2;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta1_y, gbcu);
    //
    gbcu.gridx = 3;
    gbcu.gridy = 2;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta1_m, gbcu);
    //
    gbcu.gridx = 4;
    gbcu.gridy = 2;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(statek_m, gbcu);
    //
    gbcu.gridx = 5;
    gbcu.gridy = 2;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(cel_label, gbcu);
    //
    gbcu.gridx = 6;
    gbcu.gridy = 2;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(cel_x, gbcu);
    //
    gbcu.gridx = 7;
    gbcu.gridy = 2;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(cel_y, gbcu);
    //
    gbcu.gridx = 0;
    gbcu.gridy = 3;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(planeta2_label, gbcu);
    //
    gbcu.gridx = 1;
    gbcu.gridy = 3;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta2_x, gbcu);
    //
    gbcu.gridx = 2;
    gbcu.gridy = 3;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta2_y, gbcu);
    //
    gbcu.gridx = 3;
    gbcu.gridy = 3;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta2_m, gbcu);
    //
    gbcu.gridx = 4;
    gbcu.gridy = 3;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(statek_v_label, gbcu);
    //
    gbcu.gridx = 0;
    gbcu.gridy = 4;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(planeta3_label, gbcu);
    //
    gbcu.gridx = 1;
    gbcu.gridy = 4;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta3_x, gbcu);
    //
    gbcu.gridx = 2;
    gbcu.gridy = 4;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta3_y, gbcu);
    //
    gbcu.gridx = 3;
    gbcu.gridy = 4;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta3_m, gbcu);
    //
    gbcu.gridx = 4;
    gbcu.gridy = 4;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(statek_v, gbcu);
    //
    gbcu.gridx = 0;
    gbcu.gridy = 5;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(planeta4_label, gbcu);
    //
    gbcu.gridx = 1;
    gbcu.gridy = 5;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta4_x, gbcu);
    //
    gbcu.gridx = 2;
    gbcu.gridy = 5;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta4_y, gbcu);
    //
    gbcu.gridx = 3;
    gbcu.gridy = 5;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta4_m, gbcu);
    //
    gbcu.gridx = 4;
    gbcu.gridy = 5;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(stala_grawitacji_label, gbcu);
    //
    gbcu.gridx = 0;
    gbcu.gridy = 6;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(planeta5_label, gbcu);
    //
    gbcu.gridx = 1;
    gbcu.gridy = 6;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta5_x, gbcu);
    //
    gbcu.gridx = 2;
    gbcu.gridy = 6;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta5_y, gbcu);
    //
    gbcu.gridx = 3;
    gbcu.gridy = 6;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(planeta5_m, gbcu);
    //
    gbcu.gridx = 4;
    gbcu.gridy = 6;
    gbcu.fill = GridBagConstraints.HORIZONTAL;
    ustawieniapanel.add(stala_grawitacji, gbcu);
    //
    gbcu.gridwidth = 2;
    gbcu.gridheight = 2;
    gbcu.gridx = 0;
    gbcu.gridy = 13;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(load_default_settings, gbcu);
    gbcu.gridx = 3;
    gbcu.gridy = 13;
    gbcu.fill = GridBagConstraints.NONE;
    ustawieniapanel.add(accept_settings, gbcu);
    //
    tabpane.addTab("Ustawienia", null, ustawieniapanel, "Ustawienia");
    tabpane.setMnemonicAt(0, KeyEvent.VK_2);

    // SYMULACJA
    symulacja_panel.setLayout(gbl);
    final Symulacja symulacja = new Symulacja(lista_planet);
    JPanel symulacja_sysout = new JPanel();
    symulacja_sysout.setSize(300, 750);
    symulacja_sysout.setMinimumSize(new Dimension(300, 750));
    symulacja_sysout.setMaximumSize(new Dimension(300, 750));
    // border
    TitledBorder title;

    Border blackline = BorderFactory.createLineBorder(Color.black);

    title = BorderFactory.createTitledBorder(blackline, "Status");
    title.setTitleJustification(TitledBorder.CENTER);
    symulacja_sysout.setBorder(title);
    //

    Sysout sysout = new Sysout();
    final Clock clock = new Clock();

    symulacja_sysout.setLayout(gbl);
    GridBagConstraints c = new GridBagConstraints();

    c.gridx = 0;
    c.gridy = 1;
    c.insets = new Insets(0, 0, 20, 15);
    symulacja_sysout.add(sysout, c);

    c.gridx = 0;
    c.gridy = 0;
    symulacja_sysout.add(clock, c);

    GridBagConstraints gbcs = new GridBagConstraints();
    //
    gbcs.gridx = 0;
    gbcs.gridy = 0;
    symulacja_panel.add(symulacja, gbcs);
    //
    gbcs.gridx = 1;
    gbcs.gridy = 0;
    symulacja_panel.add(symulacja_sysout, gbcs);
    //
    tabpane.addTab("Symulacja", null, symulacja_panel, "Symulacja");
    tabpane.setMnemonicAt(0, KeyEvent.VK_3);
    //

    // MENU GORNE
    mb = new JMenuBar();
    JMenu oMenu = new JMenu("Opcje");
    JMenuItem sMenu = new JMenuItem("Uruchom symulacje", new ImageIcon(
        "play.png"));
    sMenu.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        if (accepted_settings) {
          if(wybor==4){
            JOptionPane pane = new JOptionPane();
            long mass = Long.parseLong(pane.showInputDialog("Podaj mase najblizszej planety"));
            double kat = Double.parseDouble(pane.showInputDialog("Podaj Kat wystrzalu"));
          }
          symulacja.zmienWybor(wybor);
          symulacja.stara_lista = null;
          symulacja.watek.stop();
          symulacja.watek = new Thread(symulacja, "MSID Sim");
          symulacja.repaint();
          symulacja.startSim();

          clock.time = 0;
          clock.odleglosc = 0;
          clock.checkpointC = 0;
          clock.odleglosc_od_pkt = 0;
          clock.watek.stop();
          clock.watek = new Thread(clock, "MSID Sim");
          clock.watek.start();

        } else {

          JOptionPane op = new JOptionPane();
          op.showMessageDialog(null, "Brak zaakceptowanych ustawien",
              "Blad", JOptionPane.ERROR_MESSAGE);

        }

      }
    });
    JMenuItem hMenu = new JMenuItem("Pomoc");
    hMenu.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        HellpWindow h = new HellpWindow();
      }

    });
    JMenuItem htmlMenu = new JMenuItem("Zapisz raport w pliku HTML");
    htmlMenu.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
      }

    });
    JMenuItem zMenu = new JMenuItem("Zamknij");
    zMenu.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        System.exit(0);
      }

    });
    oMenu.add(hMenu);
    oMenu.add(htmlMenu);
    oMenu.add(zMenu);
    mb.add(oMenu);
    mb.add(sMenu);

    // USTAWIENIA KONCOWE
    mainframe.add(mb, BorderLayout.NORTH);
    mainframe.add(tabpane, BorderLayout.CENTER);
    mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainframe.setVisible(true);
  }

  // Metoda nic nie robiaca.
  public void doMe() {

  }

}
TOP

Related Classes of GUI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.