Klassen aus einer Main-Klasse eine andere Main-Klasse aufrufen

icy

Neues Mitglied
Hallo,
Ich muss für ein Projekt eine Simulation programmieren.
Es geht darum, dass man in einem Fenster verschiedene Parameter eingeben kann und durch den Klick auf einen Button die Parameter übergeben ein anderes Fenster geöffnet werden soll.
Das soll dann Objekte mit den Größen der Parameter anzeigen.
Jetzt zu meinem Problem, das Fenster indem die Parameter eingegeben werden sollen wird angezeigt, allerdings öffnet sich nicht das andere Fenster durch den Knopfdruck.
Für die Programmierung habe ich eine Klasse für die Parametereingabe erstellt, eine Zwischenklasse, die als Zwischenspeicher für die Parameter stehen soll, und eine Klasse, die die Objekte zeichnet.
Daher meine Frage:
Wie kann ich aus der Textfeld-Klasse die Simulations-Klasse aufrufen?
Vielen Dank im Voraus!!
 

Anhänge

  • simulation1.png
    simulation1.png
    75,8 KB · Aufrufe: 60
  • textfeld1.png
    textfeld1.png
    67,5 KB · Aufrufe: 50
  • zwischen1.png
    zwischen1.png
    24,6 KB · Aufrufe: 46

VfL_Freak

Top Contributor
Moin,

poste bitte Deinen Code nicht als Bild, sondern per Code-Tags :confused:
Erstens könnte man ihn dann lesen und zweitens zitieren :)

Danke und Gruß
Klaus
 

krgewb

Top Contributor
Deine Fehler:

In Simulation.java:
- Da ist nach dem Catch ein verirrter Strichpunkt.
- Bei paintComponent fehlt die schließende geschwungene Klammer.

In TextField.java:
- Da steht: int r = Integer.parseInt(tfMasse1.getText());
- Da steht: buttonOK.addActionListener(this); Das geht nur, wenn TextField das Interface ActionListener implementiert.
 

krgewb

Top Contributor
Ich habe es mal abgetippt. Das erleichtert uns die Fehlersuche.

Simulation.java:
Java:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Simulation extends JPanel implements Runnable, KeyListener {
    protected int radiuss, masse1, masse2;
    public JFrame myFrame = new JFrame();
    private BufferedImage[] image;
    public Zwischen miau = new Zwischen();

    public Simulation() {
        init();
        this.setPreferredSize(new Dimension(500, 500));

        myFrame = new JFrame("Simulation");
        myFrame.setLocation(100, 100);
        myFrame.setResizable(false);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.add(this);
        myFrame.addKeyListener(this);
        myFrame.pack();
        myFrame.setVisible(miau.getSimulation());
        // Informationen

        Thread th = new Thread(this);
        th.start();
    }

    public void init() {
        image = new BufferedImage[5];

        try {
            image[0] = ImageIO.read(new File("erde1.png"));
            image[1] = ImageIO.read(new File("erde2.png"));
            image[2] = ImageIO.read(new File("erde3.png"));
            image[3] = ImageIO.read(new File("erde4.png"));
            image[4] = ImageIO.read(new File("erde5.png"));
        } catch (IOException e) {
        }
    }

    @Override
    public void run() {
        while (myFrame.isVisible()) {
            repaint();

            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
            }

        }
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        // Hier werden die Objekte gezeichnet
        if (miau.getMasse1() > 80 && miau.getMasse1() <= 100) {
            g.drawImage(image[0], 20, 20, null);
        } // end of if
        if (miau.getMasse1() > 60 && miau.getMasse1() <= 80) {
            g.drawImage(image[1], 20, 20, null);
        } // end of if
        if (miau.getMasse1() > 40 && miau.getMasse1() <= 60) {
            g.drawImage(image[2], 20, 20, null);
        } // end of if
        if (miau.getMasse1() > 20 && miau.getMasse1() <= 40) {
            g.drawImage(image[3], 20, 20, null);
        } // end of if
        if (miau.getMasse1() > 0 && miau.getMasse1() <= 20) {
            g.drawImage(image[4], 20, 20, null);
        } // end of if

    }

    @Override
    public void keyPressed(KeyEvent e) {
    }

    @Override
    public void keyReleased(KeyEvent e) {
    }

    @Override
    public void keyTyped(KeyEvent e) {
        if (e.getKeyChar() == 27) {
            System.exit(0);
        }
    }
}

TextField.java:
Java:
import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TextField extends javax.swing.JFrame {
    public static void main(String[] args) {
        JFrame meinJFrame = new JFrame();
        meinJFrame.setTitle("Simulation");
        meinJFrame.setSize(500, 500);
        meinJFrame.setVisible(true);

        JPanel panel = new JPanel();

        JLabel label = new JLabel("Masse Zentralkörper in 10^24 kg");
        panel.add(label);
        // System.out.print();
        JLabel label2 = new JLabel("Masse routierender Körper in kg");
        panel.add(label2);
        // System.out.print();
        JLabel label3 = new JLabel("Radius der Massen in km");

        panel.add(label3);

        // Simulation wird erstellt

        Zwischen simulation;
        simulation = new Zwischen();

        // Textfeld wird erstellt
        // Text und Spaltenanzahl werden dabei direkt gesetzt
        JTextField tfMasse1 = new JTextField("100", 15);
        System.out.println();
        JTextField tfMasse2 = new JTextField("400000000", 15);
        System.out.println();
        JTextField radius = new JTextField("400000000", 15);

        // Text wird zurückgeliefert
        int i1 = Integer.parseInt(tfMasse1.getText());
        int i2 = Integer.parseInt(tfMasse2.getText());
        int r = Integer.parseInt(tfMasse1.getText());

        // Schriftfarbe wird gesetzt
        tfMasse1.setForeground(Color.BLUE);
        tfMasse2.setForeground(Color.GRAY);
        radius.setForeground(Color.BLACK);

        // Hintergrundfarbe wird gesetzt
        tfMasse1.setBackground(Color.YELLOW);
        tfMasse2.setBackground(Color.BLACK);
        radius.setBackground(Color.WHITE);

        // Textfeld wird unserem Panel hinzugefügt
        panel.add(tfMasse1);
        System.out.println();
        panel.add(tfMasse2);
        System.out.println();
        panel.add(radius);

        JButton buttonOK = new JButton("Show");
        buttonOK.addActionListener(this);
        panel.add(buttonOK);
        buttonOK.setEnabled(true);

        meinJFrame.add(panel);

        if (buttonOK.getModel().isPressed() == true) {
            meinJFrame.setVisible(false);
            simulation.setRadius(r);
            simulation.setMasse1(i1);
            simulation.setMasse2(i2);
            // simulation.openSimulation(true);
        } // end of if

    }
}

Zwischen.java:
Java:
public class Zwischen {
    protected int radiuss, masse1, masse2;
    public boolean var;

    public Zwischen() {
        var = false;
    }

    public void setMasse2(int pMasse2) {
        masse2 = pMasse2;
    }

    public void setMasse1(int pMasse1) {
        masse1 = pMasse1;
    }

    public void setRadius(int pRadius) {
        radiuss = pRadius;
    }

    public boolean openSimulation(boolean b) {
        var = b;
        return var;
    }

    public int getMasse2() {
        return masse2;
    }

    public int getMasse1() {
        return masse1;
    }

    public int getRadius() {
        return radiuss;
    }

    public boolean getSimulation() {
        return var;
    }
}
 

Neue Themen


Oben