Erste Schritte JFrame Inhalte werden nicht angezeigt

Hey Leute,
ich weiß nicht ob das hier so recht ein Anfänger-Thema ist, aber ich denke schon. Versucht auch ein wenig über das Chaos hinweg zu sehen und die Tatsache das ich mit null-Layout arbeite, ist lediglich eine Erst-Version eines geplanten Spiels von mir. :)

Die Problematik steht ja schon im Titel, allerdings wiederhole ich es nochmal. Das Programm arbeitet derzeit mit vielen Labeln und sobald auf ein Label geklickt wird (aktuell nur für drei vergeben) wird ein Fester geöffnet mit Bau-Optionen. So weit so gut, wird auch geöffnet, lediglich wird mir der Inhalt nicht angezeigt. :D Ich denke der Grund dafür ist voll offensichtlich und ich sehe den nur nicht.

Code: (betrifft unten JFrame Class benannt als Options)
Java:
import java.io.*;
import java.util.*;
import java.nio.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;

public class RootsOfAnEmpire extends JFrame implements ActionListener
{
    WindowListener myWindowListener = new WindowListener ();

    //CALCULATION VARIABLES
    int counter=0, m=1, e=1, p=1, mf=1, ef=1, pf=1;

    //YOUR VARIABLES
    int buildings=0, matter=0, energie=0, population=0, satisfaction=100, power=0, imperial=13;

    //FOE VARIABLES
    int buildingsf=0, matterf=0, energief=0, populationf=0, satisfactionf=100, powerf=0, imperialf=13;

    Panel navigation, operation;

    public RootsOfAnEmpire ()
    {
        setTitle("Roots of an Empire");

        //LAYOUT
        this.setVisible (true);
        this.setSize (1280,860);
        this.setLayout (null);

        //NAVIGATIONS PICTURES
        ImageIcon stars = new ImageIcon("Sterne.jpg");
        ImageIcon planet = new ImageIcon("hexa.png");
        ImageIcon planety = new ImageIcon("hexaP.png");
        ImageIcon planetf = new ImageIcon("hexaPF.png");
        ImageIcon begin = new ImageIcon("start.png");
        ImageIcon pass = new ImageIcon("end.png");

        //RESSOURCE PICTUTERES
        ImageIcon mat = new ImageIcon("matter.png");
        ImageIcon ene = new ImageIcon("energie.png");
        ImageIcon pop = new ImageIcon("population.png");

        //LIST OF LABELS
        JLabel matterlabel = new JLabel(mat);
        JLabel energielabel = new JLabel(ene);
        JLabel populationlabel = new JLabel(pop);
        JLabel background = new JLabel(stars);
        JLabel start = new JLabel(begin);
        JLabel end = new JLabel(pass);
        JLabel planet1 = new JLabel(planety);
        JLabel planet16 = new JLabel(planetf);
        JLabel planet2 = new JLabel(planet);
        JLabel planet3 = new JLabel(planet);
        JLabel planet4 = new JLabel(planet);
        JLabel planet5 = new JLabel(planet);
        JLabel planet6 = new JLabel(planet);
        JLabel planet7 = new JLabel(planet);
        JLabel planet8 = new JLabel(planet);
        JLabel planet9 = new JLabel(planet);
        JLabel planet10 = new JLabel(planet);
        JLabel planet11 = new JLabel(planet);
        JLabel planet12 = new JLabel(planet);
        JLabel planet13 = new JLabel(planet);
        JLabel planet14 = new JLabel(planet);
        JLabel planet15 = new JLabel(planet);

        //ADD OBJECTS
        navigation = new Panel();
        navigation.add (matterlabel);
        matterlabel.setBounds(200,25,107,120);
        navigation.add (energielabel);
        energielabel.setBounds(500,25,107,120);
        navigation.add (populationlabel);
        populationlabel.setBounds(800,25,107,120);
        navigation.add (planet1);
        planet1.setBounds(582,660,107,120);
        navigation.add (planet2);
        planet2.setBounds(634,571,107,120);
        navigation.add (planet3);
        planet3.setBounds(530,571,107,120);
        navigation.add (planet4);
        planet4.setBounds(686,482,107,120);
        navigation.add (planet5);
        planet5.setBounds(478,482,107,120);
        navigation.add (planet6);
        planet6.setBounds(582,482,107,120);
        navigation.add (planet7);
        planet7.setBounds(426,393,107,120);
        navigation.add (planet8);
        planet8.setBounds(634,393,107,120);
        navigation.add (planet9);
        planet9.setBounds(530,393,107,120);
        navigation.add (planet10);
        planet10.setBounds(738,393,107,120);
        navigation.add (planet11);
        planet11.setBounds(582,309,107,120);
        navigation.add (planet12);
        planet12.setBounds(686,309,107,120);
        navigation.add (planet13);
        planet13.setBounds(478,309,107,120);
        navigation.add (planet14);
        planet14.setBounds(634,225,107,120);
        navigation.add (planet15);
        planet15.setBounds(530,225,107,120);
        navigation.add (planet16);
        planet16.setBounds(582,141,107,120);
        navigation.add (start);
        start.setBounds(1125,25,107,120);
        navigation.add (background);
        background.setBounds(0,0,1280,860);
        navigation.setBounds(0,0,1280,860);

        this.add (navigation);

        start.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent me)
            {
                int a=(int)(Math.random()*100)+1;

                if (counter==0)
                {
                    if (a>50)
                    {
                        JOptionPane.showMessageDialog(null,"The Test-AI starts the game!","Hint", JOptionPane.CANCEL_OPTION);
                    }

                    if (a<=50)
                    {
                        JOptionPane.showMessageDialog(null,"You will start the game!","Hint", JOptionPane.CANCEL_OPTION);
                    }

                    start.setIcon(pass);
                }

                else
                {
                    //ADDS RESSOURCES FOR THE TURN
                    matter=matter+m;
                    energie=energie+e;
                    population=population+p;

                    matterf=matterf+mf;
                    energief=energief+ef;
                    populationf=population+pf;

                    if (a>50)
                    {
                        a=49;
                    }

                    else
                    {
                        a=51;
                    }

                }

                counter=1;
            }
        });

        planet1.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent me)
            {
                if (counter==0)
                {
                    JOptionPane.showMessageDialog(null,"Push the Start-Button!","Hint", JOptionPane.CANCEL_OPTION);
                }

                else
                {
                    Options op=new Options();
                }
            }
        });

        planet2.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent me)
            {
                if (counter==0)
                {
                    JOptionPane.showMessageDialog(null,"Push the Start-Button!","Hint", JOptionPane.CANCEL_OPTION);
                }

                else
                {
                    Options op=new Options();
                }
            }

        });

        planet3.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent me)
            {
                if (counter==0)
                {
                    JOptionPane.showMessageDialog(null,"Push the Start-Button!","Hint", JOptionPane.CANCEL_OPTION);
                }

                else
                {
                    Options op=new Options();
                }
            }

        });

        //CONNECTION WITH THE LISTENER
        this.addWindowListener (myWindowListener);
    }

    public void actionPerformed(ActionEvent z)
    {
        //STRING COMMAND
        String command = z.getActionCommand();
    }

    public void paint (Graphics g)
    {
        //g.drawImage(navigation, 0, 0,this);
        //g.drawImage(background, 100, 0,this);
    }

    public void mouseClicked(MouseEvent me){}
    public void mousePressed(MouseEvent me){}
    public void mouseEntered(MouseEvent me){}
    public void mouseExited(MouseEvent me){}
    public void mouseReleased(MouseEvent me){}

    public class Options extends JFrame
    {
        Panel operation;

        public Options()
        {
            setTitle("Options");

            //LAYOUT
            this.setVisible (true);
            this.setSize (600,500);
            this.setLayout (null);
            this.setLocation(700,300);

            //OPTION PICTURES
            ImageIcon star = new ImageIcon("star.jpg");
            ImageIcon re = new ImageIcon("refinery.png");
            ImageIcon pp = new ImageIcon("power plant.png");
            ImageIcon co = new ImageIcon("colonize.png");

            //LIST OF LABELS
            JLabel back = new JLabel(star);
            JLabel refinery = new JLabel(re);
            JLabel powerplant = new JLabel(pp);
            JLabel colonize = new JLabel(co);

            operation = new Panel();
            operation.add (refinery);
            refinery.setBounds(10,10,75,100);
            operation.add (powerplant);
               powerplant.setBounds(95,10,75,100);
            operation.add (colonize);
            colonize.setBounds(180,10,75,100);
            operation.add (back);
            back.setBounds(0,0,600,500);
            back.setBounds(0,0,600,500);

            this.add (operation);
        }
    }

    public class WindowListener extends WindowAdapter
    {
        public void windowClosing(WindowEvent ex)
        {
            System.exit (0);
        }
    }

    public static void main (String args[])
       {
        new RootsOfAnEmpire ();
      }
}

Geplant ist in der zweiten Version das Level per Zufall aufgebaut werden und ich werde die einzelnen Planeten dann in einem Array abspeichern. Ebenso wird die Verteilung der einzelnen Label zu einer Methode gemacht. Sitze da erst seit einem Abend dran, von daher ist das insgesamt ausbaufähig. :)

Gruß Alexander
 

Joose

Top Contributor
setVisible(true) macht das Fenster sichtbar. Wenn du danach noch Komponenten hinzufügst werden diese erst beim nächsten mal gezeichnet (wenn du zum Beispiel ein resize deines Fenster machst).
Daher sollte setVisible immer als letztes aufgerufen werden.

Anmerkung: Man leitet nicht von JFrame ab wenn man dessen Funktionalität nicht erweitern will ;) Layout setzen ist keine Funktionalität
 

Harry Kane

Top Contributor
Ich denke der Grund dafür ist voll offensichtlich
Denke ich nicht.
- navigation und operation sind Instanzen von java.awt.Pabel und nicht von javax.swing.JPanel. Du mischst damit AWT und Swing. Ich weiss zwar nicht, was das genau für Auswirkungen hat, aber ich würde es auf jeden Fall ändern.
- Du hast die paint-Methode von JFrame mit einem leeren Methodenrumpf überschrieben. Das alleine kann schon der Grund sein, warum nichts angezeigt wird.
- Wenn zur Laufzeit die PNG nicht gefunden werden, bleiben die ImageIcons und die JLabels drumherum leer, d. h. grau. Selbst wenn sie da wären, könntest du sie nicht sehen.
 
Gut zu wissen. Also das restliche Programm funktioniert einwandfrei, lediglich das neue Fenster wird mir nicht angezeigt. Habe es auch mal abgeändert und alles über awt laufen lassen, erziele aber das selbe Ergebnis.
 
Eventuell habe ich es überlesen, aber was könnte ein Grund dafür sein das sie nicht gefunden werden? Habe ja alles so gemacht wie bei dem Hauptframe.

Das mit der Paint Methode verstehe ich nicht so ganz. Die ist lediglich drin falls ich sie später mal brauche, von daher weiß ich leider nicht so recht was du meinst.
 

Harry Kane

Top Contributor
So, ich habe gerade mal ein bisschen rumgespielt.
- Die mit einem leeren Methodenrumpf überschriebene paint-Methode macht nix böses. In den meisten Fällen dürfte das Überschreiben von Methoden einer Superklasse mit einem leeren Methodenrumpf aber eine ganz schlechte Idee sein.
- Nach genaueren Lesen deines Beitrags ist mir klar geworden, dass das Problem auch gar nicht im Hauptframe liegt, sondern in der Options-Klasse. Der Fehler ist, dass du zwar eine Null-Layout in der Options-Klasse verwendest, aber die bounds von operation nicht setzt. Lösung: füge operation.setBounds(0, 0, 600, 500); ein.
 
:) Danke für deine Hilfe, ich werde es später testen.

Edit: habe es schnell getestet... und ja du hast natürlich recht. Gott wie blind ich bin, ich geh ins Bett und hasse mich mal eben selbst.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Im JFrame Inhalte verändern per Methode aus anderer Class Java Basics - Anfänger-Themen 5
fragenÜber(fragen); Turtle Grafik mit GUI (JFrame) Java Basics - Anfänger-Themen 3
E JFrame + Buffer-strategy Java Basics - Anfänger-Themen 8
I JFrame / Screen auf zweitem (definiertem) Monitor öffnen Java Basics - Anfänger-Themen 3
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
B HSQL mit JFrame steuern Java Basics - Anfänger-Themen 4
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
D Erste Schritte png in JFrame anzeigen? Java Basics - Anfänger-Themen 3
Thomathy Interface Wie schließt man ein anderes JFrame Fenster? Java Basics - Anfänger-Themen 6
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
S Kontrollieren ob jframe disposed ist Java Basics - Anfänger-Themen 3
Elyt JFrame in den Hintergrund verschieben Java Basics - Anfänger-Themen 3
OSchriever JFrame-Anwendungsfenster verschieben Java Basics - Anfänger-Themen 17
M Bild in JFrame Java Basics - Anfänger-Themen 1
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S JFrame mit Hintergrundbild und Button Java Basics - Anfänger-Themen 4
S JFrame Java Basics - Anfänger-Themen 15
I JFrame proportional verkleinerbar machen Java Basics - Anfänger-Themen 3
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
T Auslagern von Methoden bei einem JFrame Java Basics - Anfänger-Themen 6
N Erste Schritte JFrame Caesar-Verschlüsselung Java Basics - Anfänger-Themen 23
B Erste Schritte Objekte von JFrame der Fenstergröße anpassen Java Basics - Anfänger-Themen 3
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R JFrame nicht verschiebbar Java Basics - Anfänger-Themen 2
T Wenn JFrame Textfelder Hintergrund Grün dann... (if) Java Basics - Anfänger-Themen 3
K Java JFrame mit Hintergrundbild erstellen Java Basics - Anfänger-Themen 1
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
H Eclipse JFrame Java Basics - Anfänger-Themen 3
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
I JFrame minimieren wenn anderes Programm minimiert wird Java Basics - Anfänger-Themen 1
K Methoden Methode starten wenn JFrame geöffnet wird Java Basics - Anfänger-Themen 2
A Variablen In anderer Klasse auf Objekte von JFrame zugreifen Java Basics - Anfänger-Themen 1
B Ist MyFrame oder JFrame besser? Java Basics - Anfänger-Themen 3
Y JFrame sichtbarkeit Java Basics - Anfänger-Themen 4
KeVoZ_ Label auf JFrame willkürlich Positionieren Java Basics - Anfänger-Themen 2
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
P JFrame nur einmal öffnen Java Basics - Anfänger-Themen 4
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
V Tastatur initialisieren JFrame Probleme Java Basics - Anfänger-Themen 6
J JPG in JFrame anzeigen lassen Java Basics - Anfänger-Themen 3
J JFrame ausgabe von Werten Java Basics - Anfänger-Themen 9
F GUI als Klasse oder extend JFrame? Java Basics - Anfänger-Themen 6
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
thomasbomme Grafikfehler JFrame- Cleartype Java Basics - Anfänger-Themen 1
GreyFox Arbeit mit JFrame Java Basics - Anfänger-Themen 8
T Erste Schritte 2 Codes zusammen fügen / Label in JFrame Java Basics - Anfänger-Themen 1
Z Zwei Images auf einem JFrame - Aber nur eins wird angezeigt! Java Basics - Anfänger-Themen 5
N Input/Output Wenn kein Input, dann Fehler anzeigen lassen im JFrame Java Basics - Anfänger-Themen 6
W 2 JPanels in 2Klasse in einem JFrame zusammenfügen Java Basics - Anfänger-Themen 12
dat_vin JFrame öffnet sich mehrmals Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
M Rahmen für undekorierten JFrame Java Basics - Anfänger-Themen 6
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
B Erste Schritte JFrame in Klasse auslagern Java Basics - Anfänger-Themen 4
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
M hintergrund in jframe festlegen Java Basics - Anfänger-Themen 4
J JFrame Render Fehler - Warum? Java Basics - Anfänger-Themen 2
I komponenten werden in JFrame nicht richtig angezeigt Java Basics - Anfänger-Themen 1
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
D Best Practice JFrame im JFrame Java Basics - Anfänger-Themen 2
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
S Erste Schritte Von JFrame in nächstes JFRame wechseln Java Basics - Anfänger-Themen 0
V JFrame aktualisieren Java Basics - Anfänger-Themen 6
S JFrame ist nicht schwarz Java Basics - Anfänger-Themen 5
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Interface JButton etc. wird in JFrame mit paint() nicht angezeigt Java Basics - Anfänger-Themen 6
S JFrame wird nicht "bemalt" Java Basics - Anfänger-Themen 2
M Unsichtbare Objekte in JFrame Java Basics - Anfänger-Themen 2
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
Sogomn JLabel in anderer Klasse zum JFrame hinzufügen Java Basics - Anfänger-Themen 2
B Drawline wird auf JFrame nicht angezeigt Java Basics - Anfänger-Themen 3
N Fokus setzen nachdem JFrame in Vordergrund geholt wurde Java Basics - Anfänger-Themen 7
K Methoden Objekt auf JFrame zeichnen Java Basics - Anfänger-Themen 16
S JFrame leeren Java Basics - Anfänger-Themen 6
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
J Klick auf Button -> JFrame öffnet sich erneut. & Datei lässt sich nicht löschen Java Basics - Anfänger-Themen 7
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
P JFrame Component automatische Größe verhindern Java Basics - Anfänger-Themen 2
D JFrame, Komponenten verschmiert. Java Basics - Anfänger-Themen 15
M Schriftfarbe in JFrame Java Basics - Anfänger-Themen 24
A JFrame läuft ewig? Java Basics - Anfänger-Themen 2
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
B Wie kann man auf das JFrame einer anderen Klasse zugreifen, etwas hinzufügen und entfernen?? Java Basics - Anfänger-Themen 3
N JFrame-Objekt in neuer Methode nicht verfügbar? Java Basics - Anfänger-Themen 3
A Frage zu: JFrame setLocationRelativeTo Java Basics - Anfänger-Themen 3
N Erste Schritte Prozessor Kernanzahl in JFrame Java Basics - Anfänger-Themen 3
DStrohma Transparenter JFrame Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben