Neues JFrame wird nicht richtig angezeigt

ITMatze

Mitglied
Hallo Liebe Comunity!
Ich habe folgendes Problem:
Ich habe ein JFrame mit einem Button Programmiert. Dieser Button soll ein neues JFrame öffnen. Wenn ich aber mit dem Button das JFrame öffne, wird es nur ganz klein angezeigt. Wenn ich diese Klasse aber über die entwicklungsumgebung öffne, wird das fenster in Voller größe angezeigt. Die größe des Fensters wird so festgelegt:
Java:
public static void main(String args[])
    {
        Test fenster = new Test();
        fenster.setSize(fenster.getToolkit().getScreenSize());
    }

Woran liegt es, dass das Fenster, wenn ich es über den Button öffne, nicht korrekt angezeigt wird?

Danke schonmal im Vorraus!

Mit Freundlichen Grüßen

ITMatze
 
Setzte die Größe des Fensters einfach direkt im Konstruktor. Also in der Klasse Test einfach die Größe setzen. Wahrscheinlich wird deine Zeile gar nicht mehr aufgerufen.
 
Könntest du vielleicht ein bisschen mehr von deinem Code posten ? Wenn das JFrame beim ButtonClick geöffnet werden soll, muss du dem Button irgendwo einen ActionListener hinzugefügt haben. Deiner Main-Methode kann man nur entnehmen, dass du eine Instanz von der Klasse Test erstellst und ihr eine Größe zuweist.

Java:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Test buttonFrame = new Test();
buttonFrame.setSize(300,300);
buttonFrame.setVisible(true);
}
});
 
Hier der Code, der das Fenster mit dem Button öffnet:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JButton
public class Menüfenster extends JFrame
{
    JButton Sonnensystem;

    public static void main (String [] args)
    {
        Menüfenster fenster = new Menüfenster();
        fenster.setSize(fenster.getToolkit().getScreenSize());
        fenster.setBackground(Color.black);
    }
   
    public Menüfenster()
    {
        super("Astronomie Informationen");
        assignIcon();
       
        Sonnensystem = new JButton("Unser Sonnensystem");
       
        Sonnensystem.addActionListener(new ButtonLauscher());
       

        add(Sonnensystem);
        Sonnensystem.setBounds(450,120,200,30);
       
        setVisible(true);
        setLayout(null);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        pack();
    }
   
    private void assignIcon()
    {
        Image img = getToolkit().getImage("Bilder/Astronomie-Icon.gif");
        MediaTracker mt = new MediaTracker(this);
       
        mt.addImage(img, 0);
       
        try{
            mt.waitForAll();
        } catch (InterruptedException e) {
        }
        setIconImage(img);
    }
   
    class ButtonLauscher implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if (e.getActionCommand().equals("Unser Sonnensystem"))
            {
                dispose();
                new Sonnensystem();
            }
        }
    }
}

Hier der Code von dem fenster, das geöffnet werden soll:
Java:
import java.awt.*;
import java.awt.event.*;

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

public class Sonnensystem extends JFrame
{
    JButton Menü;


    public static void main(String args[])
    {
        Sonnensystem fenster = new Sonnensystem();
        fenster.setSize(fenster.getToolkit().getScreenSize());
        fenster.setBackground(Color.black);
    }

    public Sonnensystem()
    {
        super("Unser Sonnensystem");
        assignIcon();

        JButton Menü = new JButton("Menü");
       
        Menü.addActionListener(new ButtonLauscher());

        add(Menü);
        Menü.setBounds(10,10,100,30);
        
        add(Sonne);
        Sonne.setBounds(40,420,100,30);
       
        setLayout(null);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        setVisible(true);
        pack();
    }

    public void paint(Graphics g)
    {
        Image Sonne;
        Sonne = getToolkit().getImage("Bilder/Sonne.gif");
        g.drawImage(Sonne,35,300, this);

    }

    private void assignIcon()
    {
        Image img = getToolkit().getImage("Bilder/Astronomie-Icon.gif");
        MediaTracker mt = new MediaTracker(this);

        mt.addImage(img, 0);

        try{
            mt.waitForAll();
        } catch (InterruptedException e) {
        }
        setIconImage(img);
    }

    class ButtonLauscher implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if(e.getActionCommand().equals("Menü"))
            {
                dispose();
                new Menüfenster();
            }
           
        }
    }
}
 
Du erstellst in deiner SonnenFenster- Main-Methode eine Instanz des Fensters (Sonnensystem), das in der Klasse Menüfenster geöffnet werden soll. Das macht natürlich keinen Sinn.
Die Main-Methode startet deine Applikation. Pro Applikation gibt es nur eine Main-Methode. Nun hast du in beiden deiner Klassen eine Main-Methode, von denen nur eine ausgeführt wird !!!

Wenn du nun deine Main Methode in der Klasse MenüFenster aufrufst, wird zwar deine Instanz der Klasse Sonnenfenster erstellt, aber die Main-Methode der Klasse SonnenFenster wird nicht ausgeführt, was bedeutet, dass die setSize Method nicht ausgeführt wird und das Fenster die Grösse 0 hat !!!

Nimm die Main-Methode in Sonnenfenster raus und mache folgendes:

Java:
public Sonnensystem()
    {
        super("Unser Sonnensystem");
        setSize(500,500);
        setBackground(Color.BLACK);
       assignIcon();

       JButton Menü = new JButton("Menü");
     
        Menü.addActionListener(new ButtonLauscher());

        add(Menü);
        Menü.setBounds(10,10,100,30);
      
        add(Sonne);
        Sonne.setBounds(40,420,100,30);
     
        setLayout(null);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        setVisible(true);
        pack();
    }
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben