Fehlende Componenten in GUI

Code:
package Modell;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
import org.jdesktop.swingx.JXMapKit;
import org.jdesktop.swingx.JXMapKit.DefaultProviders;
import Modell.Auswertung;



@SuppressWarnings("serial")
public class Inhalt extends JFrame implements KeyListener
{   
   
   
    public static int temp2;
    public static int höhe2;
    public static int neig = 0;
   
    public static int ant_st1;
    public static int ant_st2;
    public boolean ant10;
   
    public static String fw1;
    public static String fw2;
    public boolean fw10;
   
    public static String ru1;
    public static String ru2;
    public boolean ru10;
   
    public static String uk1;
    public static String uk2;
    public boolean uk10;
   
    int pkt1 = 0;
    int pkt2 = 0;
    public String vh;
   

    static JPanel kh;
    static JPanel status;
   
   
   
    public Inhalt()
    {
    this.setLayout(new GridLayout(3,1));
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
   
JPanel map = new JPanel();
    map.setBorder(BorderFactory.createLineBorder(Color.black));
    add(map);
   
    JXMapKit mapKit = new JXMapKit();
    mapKit.setName("mapKit");
    mapKit.setPreferredSize(new java.awt.Dimension(413, 218));
    map.add(mapKit);
    mapKit.setDefaultProvider(DefaultProviders.OpenStreetMaps);
   
   
   
   
    ImageIcon imgIcon = new ImageIcon(getClass().getResource("Bilder/0p.png").toExternalForm());
   
JPanel kh = new JPanel();
    kh.setBorder(BorderFactory.createLineBorder(Color.black));
    kh.setBackground(Color.blue);
    kh.setVisible(true);
    add(kh);
   
   JLabel image = new JLabel(imgIcon);
   image.setVisible(true);
   kh.add(image);
  
       
JPanel status = new JPanel();
    status.setBorder(BorderFactory.createLineBorder(Color.black));
    status.setLayout(new GridLayout(8,2));
    add(status);
   
    JLabel geschw = new JLabel("Tempo");
    geschw.setBorder(BorderFactory.createLineBorder(Color.black));
    status.add(geschw);
   
   
    JTextField temp = new JTextField(temp2 + "km/h");
    temp.setBorder(BorderFactory.createLineBorder(Color.black));
    temp.setEditable(false);
    status.add(temp);
   
   
   
   
    JLabel höhe = new JLabel("Höhe");
    höhe.setBorder(BorderFactory.createLineBorder(Color.black));
    status.add(höhe);
   
    JTextField meter = new JTextField(höhe2 + "m");
    meter.setEditable(false);
    meter.setBorder(BorderFactory.createLineBorder(Color.black));
    status.add(meter);
   
   
   
    JLabel mot = new JLabel("Motoren");
    status.add(mot);
    if(ant10 = false)
    {mot.setBackground(Color.RED);}

       
    JTextField stufe = new JTextField("Stufe: " + ant_st1);
    stufe.setEditable(false);
    status.add(stufe);

   
   
    JLabel fahrw = new JLabel("Fahrwerk");
    status.add(fahrw);
    if(fw10 = false)
    {fahrw.setBackground(Color.RED);}
   
   
    JTextField fw = new JTextField(fw2);
    fw.setEditable(false);
    status.add(fw);
   
   
   
    JLabel uk = new JLabel("Klappen");
    status.add(uk);
    if(uk10 = false)
    {uk.setBackground(Color.RED);}
   
    JTextField klappen = new JTextField (uk2);
    klappen.setEditable(false);
    status.add(klappen);
   
   
   
    JLabel ru = new JLabel("Ruder");
    status.add(ru);
    if(ru10 = false)
    {ru.setBackground(Color.RED);}
    ru.setBackground(Color.RED);
   
    JTextField ruder = new JTextField(ru2);
    ruder.setEditable(false);
    status.add(ruder);
   
   
   
    createMenu();
    pack();
    setTitle("Status");
    setLocation(1505,0);
    setResizable(false);
   
    setVisible(true);
   
    System.out.println("vh ok");

    }
   


    private void createMenu()
    {
        JMenuBar menuBar = new JMenuBar();
       
        this.setJMenuBar(menuBar);
        JMenu einstellungen = new JMenu("Einstellungen");
        menuBar.add(einstellungen);
       
        addFileMenuItems(einstellungen);
    }   
   
    private void addFileMenuItems(JMenu menuBar)
    {
        JMenuItem quitItem = new JMenuItem("Trennen");
        JMenuItem verb = new JMenuItem("Verbinden");
       
        menuBar.add(verb);
        menuBar.add(quitItem);
       
       
        quitItem.addActionListener(new ActionListener()
                {public void actionPerformed(ActionEvent e)
            {System.exit(0);}                                                    // Verbindung trennen -------------------------------------------------   
           
                });
    }
   
   
   
    public void keyTyped(KeyEvent e)
    {
       
        e.getKeyChar();
        char taste = e.getKeyChar();
       
        switch(taste)
        {
        case '+':     ant_st1++;
                    if(ant_st1 >= 6)
                    {ant_st1 = 6;}
                   
        case '-':     ant_st1--;
                    if(ant_st1 <= 0)
                    {ant_st1 = 0;}
                   
        case 'ü':     if(fw1.equals("ein"))
                    {fw1 = "aus";}
                    else if(fw1.equals("aus"))
                    {fw1 = "ein";}
       
        case 'a':    ru1 = "links";
        case 'd':    ru1 = "rechts";
        case 'w':    ru1 = "hoch";
        case 's':    ru1 = "runter";
       
        case 'ä':    if(uk1.equals("ein"))
                    {uk1 = "aus";}
                    else if(uk1.equals("aus"))
                    {uk1 = "ein";}
       
        }
        }
       
         
    public void keyPressed(KeyEvent e) 
        {e.getKeyChar();}
    

    public void keyReleased(KeyEvent e) 
        {
        e.getKeyChar();
        char taste = e.getKeyChar();
       
        switch(taste)
        {
        case 'a':    ru1 = "0";
        case 'd':    ru1 = "0";
        case 'w':    ru1 = "0";
        case 's':    ru1 = "0";
        }
       
        }

    }
Guten Abend Gemeinde,

Ich bin dabei ein JFrame zu erstellen, dass mehrere verschiedene Sachen beinhaltet.
Als erstes soll mir im Obersten Panel eine Karte(JXMapKit) GPS-Koordinaten anzeigen.
Da mein erstes Problem: ich erhalte keinerlei Fehlermeldungen aber mir wird auch nichts angezeigt. Zwar ist der Platz im GridLayout besetzt aber es passiert rein garnichts. selbst das Einfärben des Panels wir nicht dargestellt (war rein zu probezwecken).


In einem Darunterliegenden Panel sollten mir PNG-Dateien Dargestellt werden. Hier jedoch das selbe wie beim Oberen Panel.

im untersten Panel zeigt es mir wiederrum alle Komponenten an.

Den Code für die einzelnen Panels habe ich in anderen Klassen getestet und er hat Funktioniert. füge ich ihn jedoch in meine JFrame Klasse ein, passiert nichts...
 
Hallo,

dein Code ist schwer zu lesen, weil deine Variablennamen wenig sprechend sind
Java:
static JPanel kh;
Dann initialisierst du eine lokale (!) Variable "kh" statt die static Variable zu initialisieren:
Java:
JPanel kh = new JPanel();
Außerdem kommt mir zu oft "static" vor (dazu noch "public") - das kann nicht gut sein.

Weshalb der Fehler, den du beschreibst, auftritt, habe ich mir nicht angeguckt.

Gruß
Fritz
 
Du hast bei allen switch Anweisungen die breaks vergessen, da kann dann natürlich etwas falsch laufen. (sollte aber nichts mit deinen Problem zu tun haben)

Und wie schon vom Vorsprecher erwähnt ist dein Code schlecht zu lesen. Methoden sollten zwar möglichst kurz sein -> das heißt aber nicht alles in eine Zeile zwängen und Leerzeichen entfernen.
Beispiel switch Anweisung in der Metode "keyTyped"
Dein Code:
Java:
       switch(taste)
       {
           case '+':     ant_st1++;
           if(ant_st1 >= 6)
           {ant_st1 = 6;}

           case '-':     ant_st1--;
           if(ant_st1 <= 0)
           {ant_st1 = 0;}

           case 'ü':     if(fw1.equals("ein"))
           {fw1 = "aus";}
           else if(fw1.equals("aus"))
           {fw1 = "ein";}

           case 'a':    ru1 = "links";
           case 'd':    ru1 = "rechts";
           case 'w':    ru1 = "hoch";
           case 's':    ru1 = "runter";

           case 'ä':    if(uk1.equals("ein"))
           {uk1 = "aus";}
           else if(uk1.equals("aus"))
           {uk1 = "ein";}
       }
Lesbarer (und richtiger da breaks enthalten):
Java:
       switch(taste) {
           case '+':
               ant_st1++;
               if(ant_st1 >= 6) {
                   ant_st1 = 6;
               }
               break;
           case '-':     
               ant_st1--;
               if(ant_st1 <= 0) {
                   ant_st1 = 0;
               }
               break;

           case 'ü':     
               if(fw1.equals("ein")) {
                   fw1 = "aus";
               } else if(fw1.equals("aus")) {
                   fw1 = "ein";
               }
               break;

           case 'a':   
               ru1 = "links";
               break;
           case 'd':   
               ru1 = "rechts";
               break;
           case 'w':   
               ru1 = "hoch";
               break;
           case 's':   
               ru1 = "runter";
               break;
           case 'ä':   
               if(uk1.equals("ein")) {
                   uk1 = "aus";
               } else if(uk1.equals("aus")) {
                   uk1 = "ein";
               }
               break;
       }
Der Code ist zwar länger, aber dafür einfach übersichtlicher. Natürlich darf ihn jeder so formatieren wie er will, aber es hat einfach mehr Vorteile wenn man sich an übliche Konventionen hält.
Viele würden zum Beispiel meinen wenn ein if-Block oder else-Block nur ein Statement enthält kann man die {}-Klammern einfach weglassen.
-> Ja der Compiler beschwert sich nicht, für mich ist es aber eine zusätzliche Fehlerquelle daher mache ich sie immer.
 
Guten Tag,

vielen Dank erstmal für die Antworten.

Das public vor den Variablen habe ich gesetzt, da die Variablen in einer anderen Klasse ausgelesen bzw verändert werden sollen. Deshalb ist es notwendig wenn mich nicht alles täuscht?

Mit dem static hast du wahrscheinlich recht, das benötige ich bei erneutem detrachten wirklich nicht.


Das die Variablen wenig sagend sind liegt wohl daran, das es sich um eine Steuerung handelt, die die Variablen erst einmal an ein Smartphone versendet.



danke für den Hinweis mit "break;". dies war mir bis jetzt nicht ganz verständlich, aber dieses muss nach jedem case geschrieben werden, oder?

Ich beschäftige mich zudem erst seit ca einem dreiviertel Jahr mit Java, dadurch unterlaufen mir noch manchmal Fehler. Außerdem beschäftige ich mich seit diesem Projekt erst mit Methoden, welche nicht zum "Grundwissen" gehören, und lerne diese erst(JXMaps, KeyEvents, ...).

Deshalb bin ich für jeden Vorschlag und jede Anregung offen.
 
Ich habe noch ein wenig herum probiert und in der main()_
Methode ca 90% gelöscht. komischerweise wurde immer noch das selbe ausgeführt wie zuvor. der Fehler lag wohl bei Eclipse. wenn ich jetzt jedoch mein Programm ausführe, bekomme ich eine NullPointerException für folgendes Codefragment:
Java:
ImageIcon imgIcon = new ImageIcon(getClass().getResource("Bilder/0p.png").toExternalForm());
liege ich falsch in der Annahme, dass der Dateiname ausreichend ist, wenn die Bilder in einem Paket in src liegen?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben