Aus JFrame-Fenster SuM-Fenster öffnen geht nicht!

  • Themenstarter Themenstarter kevinbluej
  • Beginndatum Beginndatum
K

kevinbluej

Gast
Hallo liebe Community,

ich habe in Java ein JFrame Fenster erstellt, mit einer Menübar. Wenn ich jetzt in der Menübar auf eine Registerkarte klicke und einen Unterbefehl aufrufe, soll ein SuM-Programm geöffnet werden. Das funktioniert so weit auch. Nur leider ist das neue SuM-Fenster total verbugt, wenn man es öffnet, also man klickt auf Schließen und nichts passiert. Auch das JFrame Fenster hängt sich dabei auf.
Man muss die komplette Entwicklungsumgebung schließen, um die verbugten Fenster zu schließen.
Weiß einer wie man das beheben kann?

Informationen:

Windows 7 (x64)
Entwicklungsumgebung blueJ,


Vielen Dank schon mal im Vorraus.

Gast
 
Hallo,

also Fehlermeldungen gibt es keine, es lässt sich problemlos übersetzen. Das SuM-Programm an sich geht auch, nur wenn ich es aus dem Menü öffne geht es nicht.


SuM-Programm:

Java:
import sum.kern.*;
/**
 * @author
 * @version
 */
public class CAD
{
    
    // Objekte
    Tastatur dieTastatur;
    Maus dieMaus;
    Bildschirm derBildschirm;
    Planstift meinStift;
    Knopfstift derStift;
    
    boolean stop = false;
    // int i;

    // Konstruktor
    public CAD()
    {
        derBildschirm = new Bildschirm(1200,800);
        dieMaus = new Maus();
        dieTastatur = new Tastatur();
        meinStift = new Planstift();
        derStift = new Knopfstift();
        fuehreAus();
    }

    
    
    // Dienste
    public void fuehreAus()
    { 
    //Quelltext
    }

JFrame:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.beans.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;

/**
* Dieses Menü basiert auf einem JFrame.
* Ein JFrame besitzt grundsätzlich eine Titelzeile, ein Maximier- / Minimier- / und ein Schließbutton. Außerdem besitzt es ein Icon und ein Systemmenü.
* Der Befehl lautet z.b.: JFrame frame = new Frame(" Hallo Welt ");
* Das Hallo Welt würde in diesem Falle in der Titelzeile stehen.
*/

public class Menue extends JFrame implements ActionListener
{
    /* Die Objekte */  
    JPanel mPanel;
    
    JFrame frame = new JFrame();
    
    JMenuBar jMBar1 = new JMenuBar();
    
    JMenu jMFile = new JMenu();
    JMenu jMSimulation = new JMenu();
    JMenu jMSum = new JMenu();
    JMenu jMHelp = new JMenu();
 
    JMenuItem jMFileExit = new JMenuItem();
    JMenuItem jMSumCAD = new JMenuItem();
    JMenuItem jMFileImageSave = new JMenuItem();
    JMenuItem jMSimulationCube = new JMenuItem();
    JMenuItem jMHelpAbout = new JMenuItem();
    
    JToolBar jToolBar = new JToolBar();
    
    ImageIcon image1;
    ImageIcon image2;
    
    JPanel jPanel1 = new JPanel();
    
    private JQDrawPanel drawPanel = new JQDrawPanel();
  
    /* Der Konstruktor */
    public Menue() 
    {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        
        try 
        {
            initial();
        }
    
        catch(Exception e) 
        {
            e.printStackTrace();
        }
    }
  
    /**Initialisierung der Komponenten und Registrierung der Listener */
  
    private void initial() throws Exception  
    {
        
        try 
        {
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        } 
        
        catch (Exception e) {}

        // Swing-Panel gesetzt und initialisiert
        mPanel = (JPanel) this.getContentPane();
    
        // Fenstergroesse und Titelzeile
        Toolkit t = Toolkit.getDefaultToolkit();
        this.setVisible(true); 
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.setTitle("3D CAD-Programm (Computer-Aided Design) by Kevin und Yifan");
        Image i = t.getImage("icon.png");
        this.setIconImage(i);
  
        //Registerkarte Menü
        jMFile.setText("Datei");
        jMFileImageSave.setText("Als Bild speichern");
        jMFileExit.setText("Beenden");
        
        //Registerkarte Sum
        jMSum.setText("SuM");
        jMSumCAD.setText("CAD");
        
        //Registerkarte Gloop
        jMSimulation.setText("GLOOP");
        jMSimulationCube.setText("Cube-Simulation");
    
        //Registerkarte Hilfe
        jMHelp.setText("Hilfe");
        jMHelpAbout.setText("Info");
    

        // Listener für CAD
        jMSumCAD.addActionListener(new ActionListener()  
        {
            
            public void actionPerformed(ActionEvent e) 
            {
                jMSumCAD_actionPerformed(e);
            }
        }
        );
        
    
        // Toolbar mit Button füllen
        jToolBar.add(jB1);
        jToolBar.add(jB2);
        jToolBar.add(jB3);
    
        // Menubar füllen
        
        jMFile.add(jMFileImageSave);
        jMFile.add(jMFileExit);
        jMHelp.add(jMHelpAbout);
        jMSum.add(jMSumCAD);
        jMSimulation.add(jMSimulationCube);
        
        jMBar1.add(jMFile);
        jMBar1.add(jMSimulation);
        jMBar1.add(jMSum);
        jMBar1.add(jMHelp);
    
        // Komponenten dem Fenster hinzufügen
        this.setJMenuBar(jMBar1);
        mPanel.add(jToolBar, BorderLayout.NORTH);
        mPanel.add(jPanel1, BorderLayout.CENTER);
    }
   
  
   
   public void jMSumCAD_actionPerformed(ActionEvent e)
   {
       CAD meineAnwendung = new CAD();
   }
      
   /* Button 1 betätigt - Label wird angezeigt*/
   void jB1_actionPerformed(ActionEvent e) {}
    
   /* Button 2 betätigt - Label wird ausgeblendet*/
   void jB2_actionPerformed(ActionEvent e) {}
   
   class JQDrawPanel extends JPanel 
   {
       public JQDrawPanel() 
       {
           this.setPreferredSize(new Dimension());
       }
   }
}
 
Java:
Tastatur dieTastatur;
    Maus dieMaus;
    Bildschirm derBildschirm;
    Planstift meinStift;
    Knopfstift derStift;

WTF ist das denn für ein schrott ?

gewöhnt dir das mal gleich wieder ab *besser : gewöhns dir gar nicht erst an* ... und arbeite mit SE klassen ...

so wird dir wohl kaum jemand helfen können
 
SuM-Bibliotheken für BlueJ - Da ist das eben so 😉

BTW: Man muss sicher nicht die IDE schließen. In der Console ist oben rechts so ein rotes Viereck, mit dem man die Anwendung notfalls killen kann.

Woran das genau liegen könnte müßte man mal testen (ggf. mal die "Bildschirm"-Klasse genauer ansehen). Was ist denn das eigentliche Ziel? MUSS Swing und SuM gemischt werden?
 
Hallo,

also das SuM-Fenster wird komplett geladen. Alle gezeichneten Linien und Objekte sind vorhanden. Wenn man dann aber z.B. auf der Tastatur 'w' drückt passiert gar nichts.
Wenn man das SuM-Fenster nicht über das Menü öffnet funktioniert das Programm einwandfrei.
 

Zurück
Oben