Fehlermeldung mit Interface

Kanitrino

Bekanntes Mitglied
Hallo allerseits,
Ich habe da ein Problem; ich kriege eine befremdliche Fehlermeldung (s. u.) :
Der Hintergrund ist der : Ich habe eine Applikation mit einer Animation/ Simulation (auf jeden Fall was Bewegtes) geschrieben
Code:
public class LifeSimulation extends JPanel implements Runnable, MouseListener, LifeStartStop
{
   LifeGui gui;
   boolean laufe   = false;
   Thread running;
....
public LifeSimulation()
 {
     gui = new LifeGui();  
     gui.setInterface((LifeStartStop) this);
    ...
    anfangen();
 }

public void anfangen()
   {
     brettLeer();
     brettZufall();
     repaint();
     laufe = false;
     starten();
   }

public void run()
   {     while(true)
     {verzoegerung();
     System.out.println("Run 1  "+laufe);
     while(laufe)
     {   System.out.println("Run 2"+laufe);     
       zaehlen();
       wachsen();
       repaint();
       verzoegerung();     
     }}
   }
   
   public void starten()
   {   if (running == null)
     {   running = new Thread(this);
       running.start();
   }   }
   
   public void stop()
   {running=null;}
   
   public void setLaufen(boolean lauf)
   {
     System.out.println("vorher "+laufe);
     laufe = lauf;     
     System.out.println("nachher "+laufe);
   }}
....
Diese Animation baut, wie man im Code oben sieht, eine GUI ein und schickt ihr die Instanz eines Interface's von sich selbst. Das dient dazu, die Informationen des ActionListeners in die "falsche" Richtung, von der GUI zur Simulation, in der sie referenziert ist, weiterzugeben.
Das Interface :
Code:
 public interface LifeStartStop
{
   public void brettLeer();
   public void setLaufen(boolean lauf);
}

und die GUI :
Code:
public class LifeGui extends JPanel
{
LifeStartStop parent;
JButton bStart;

   public LifeGui()
   {
        setKomponenten();
        ...
    }

    public void setInterface(LifeStartStop simulation)
    {
         parent = simulation;
         System.out.println("setInterface");
     }

   public void setKomponenten()
    {
         bStart    = new JButton(" S T A R T ");
          bStart.addActionListener
           (new ActionListener()
                 { public void actionPerformed(ActionEvent e)
                 {  System.out.println("Start vorher");
                  parent.setLaufen(true);
                System.out.println("Start nachher");
               ....
       }});
   }}
Beim Start erscheint Graphik (Animation + GUI) als stehendes Bild, wie geplant (laufe = false). Die Animation soll nun durch Drücken der Starttaste in Bewegung gebracht werden. Ich bekomme stattdessen die o. a. Fehlermeldung, und der Thread läuft weiter.

Von den o. g. System.out.println-Anweisungen erscheint nach Programmstart
setInterface
Run 1 false
Run 1 false
Run 1 false
...
[Button wird gedrückt :]
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at de.kanitrino.life.LifeGui$1.actionPerformed(LifeGui.java:114)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
Start vorher
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Run 1 false
Run 1 false
...
Man beachte die "Start vorher"-Meldung in der Mitte der Fehlermeldung.
Bei erneutem Drücken des Buttons kommt die Fehlermeldung noch einmal und der Thread läuft weiter.
Die boolsche Variable "laufe", um die es ja geht, bleibt immer "false", so dass die Animation nicht in bewegung kommt. Die " public void setLaufen(boolean lauf)"-Methode der Animation wird offensichtlich nicht aufgerufen, zumindest erscheint keine der beiden System.out..-Meldungen.
Seltsam ist : Wenn ich die Zeile aus der GUI
parent.setLaufen(true);
außerhalb des ActionListeners - z. B. im Konstruktor - platziere, erhalte ich, ohne einen anderen System.out.. -Text die Fehlermeldung
Exception in thread "main" java.lang.NullPointerException
at de.kanitrino.life.LifeGui.<init>(LifeGui.java:57)
at de.kanitrino.life.LifeSimulation.<init>(LifeSimulation.java:43)
at de.kanitrino.life.LifeMain.<init>(LifeMain.java:29)
at de.kanitrino.life.LifeMain.main(LifeMain.java:49)
Hat jemand eine Idee, worin das Problem bestehen kann ?
 

Kanitrino

Bekanntes Mitglied
Hallo,
Zeile 114 der GUI ist geanu die
Code:
parent.setLaufen(true);
"parent" ist das Objekt, das "LifeSimulation" von sich selbst referenziert und an die GUI weitergegeben hat :
Code:
gui = new LifeGui(); 
gui.setInterface((LifeStartStop) this);
In der GUI wurde es in Empfang genommen
Code:
public void setInterface(LifeStartStop simulation)
   {
     parent = simulation;
     System.out.println("setInterface");
   }
, was durch die "Meldung "setInterface" bestätigt wurde. Es müsste also ein Objekt vorhanden sein - meine ich wenigstens.
 

Kanitrino

Bekanntes Mitglied
Aha, ich glaube, Du bist auf der richtigen Spur :
de.kanitrino.life.LifeSimulation[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
Run 1 false
Run 1 false
...
... aber was hat das mit FlowLayout zu tun ?
 

Meniskusschaden

Top Contributor
Ich wollte nur sicher sein, dass parent wirklich auf etwas referenziert. simulationhätte ja auch null sein können. Im Moment sehe ich den Fehler nicht. Kannst du genug Code für eine lauffähige Version posten?
 

Kanitrino

Bekanntes Mitglied
Code ist kein Problem, lauffähig schon eher (s. o.). Das Programm ist das "Spiel des Lebens" von Conway. Es ist noch nicht ganz fertig, erst wollte ich es lauffähig kriegen, damit ich was sehe.
Es besteht aus mehreren Klassen; die Main befindet sich in der Klasse LifeMain
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRootPane;

public class LifeMain
{
   JFrame frame0, frame;
   LifeSimulation simulation;
   LifeGui gui;
  
   public LifeMain()
   {
     frame0 = new JFrame ("JPanel Test");
    frame0.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
     frame = new JFrame();
     frame.setSize(new Dimension(900, 480));
     frame.setLayout(new BorderLayout());
     frame.setUndecorated(true);
     frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
     frame.setLocationRelativeTo(null);
        
     simulation = new LifeSimulation();
     //simulation.setSize(new Dimension(660, 480));
     frame.add(simulation, BorderLayout.CENTER);
    
     gui = new LifeGui();
     gui.setBackground(new Color(220, 165, 155));
     //gui.setSize(new Dimension(200, 480));
     frame.add(gui, BorderLayout.EAST);
    
     frame0.setVisible(true);
     frame.setVisible(true);  
   }
  
    public static void main(String[] args)
    {
       new LifeMain();
     }
}
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;

public class LifeSimulation extends JPanel implements Runnable, MouseListener, LifeStartStop
{
   private static final long serialVersionUID = 1L;
   int feld     = 4;
   int brettQuer   = 660;
   int brettHoch   = 480;
   int anzQuer     = brettQuer/feld;
   int anzHoch     = brettHoch/feld;  
   int anzBrett   = anzQuer*anzHoch;
   int anz       = anzBrett/6;
  
   int[][]brettNachbarn;
   boolean[][]brett;
  
   LifeGui gui;
      
   //..............................................
   // Zur Steuerung des Programms
   //.............................
   int msec     = 100;
   boolean laufe   = false;
   Random zufall   = new Random();
   Thread running;
   int xMaus, yMaus;
   boolean imObjekt;
  
   public LifeSimulation()
   {
     brettNachbarn    = new int[anzQuer][anzHoch];
     brett         = new boolean[anzQuer][anzHoch];

     gui = new LifeGui(); 
     gui.setInterface((LifeStartStop) this);
     gui.setBackground(new Color(220, 165, 155));
    
     anfangen();
   }
  
//*********************************
   //++++++ R U N +++++++ R U N +++++ R U N +++++ R U N +++++ R U N +++++
//*********************************  
   public void run()
   {     while(true)
     {verzoegerung();
     System.out.println("Run 1  "+laufe);
     while(laufe)
     {   System.out.println("Run 2  "+laufe);    
       zaehlen();
       wachsen();
       repaint();
       verzoegerung();    
     }}
   }
  
   public void starten()
   {   if (running == null)
     {   running = new Thread(this);
       running.start();
   }   }
  
   public void stop()
   {running=null;}
  
   public void setLaufen(boolean lauf)
   {
     System.out.println("vorher "+laufe);
     laufe = lauf;    
     System.out.println("nachher "+laufe);
   }

//*******************************************
//    Anfangsbedingungen
//*******************************************
  
   public void anfangen()
   {
     brettLeer();
     brettZufall();
     repaint();
     laufe = false;
     starten();
   }

//********************
//  Spielfeld leeren
//********************

   public void brettLeer()
   {
     for (int y=0; y<anzHoch; y++)
     for (int x=0; x<anzQuer; x++)
       brett[x][y]   = false;
   }
  
//*******************************************
//    Anfangsstellung wird per Zufall ermittelt
//*******************************************

   public void brettZufall()
   {
     int i = 0;
     while (i < anz)
     {
       int x  = zufall.nextInt(anzQuer);
       int y  = zufall.nextInt(anzHoch);
       brett[x][y] = true;
       i++;
     }    
   }
//************************************************
// Zellen werden mit Hilfe der Maus aktiviert
//************************************************

   public void mousePressed(MouseEvent e)
   {   xMaus = e.getX()-10;
     yMaus = e.getY()-10;
     imObjekt = (xMaus >= 0) && (xMaus <= brettQuer)
         && (yMaus >= 0) && (yMaus <= brettHoch);
     if (!imObjekt) return;
    
     {   if(brett[xMaus/feld][yMaus/feld])
         brett[xMaus/feld][yMaus/feld]=false;
       else brett[xMaus/feld][yMaus/feld]=true;
     }
     repaint();  // ?
   }
   public void mouseClicked(MouseEvent e){}
   public void mouseDragged(MouseEvent e){}
   public void mouseReleased(MouseEvent e){}
   public void mouseEntered(MouseEvent e){}
   public void mouseExited(MouseEvent e){}
   public void mouseMoved(MouseEvent e){}

//****************************************
// Die Zellen vermehren sich oder sterben
//****************************************
  
   public void wachsen()
   {
     for (int y=0; y<anzHoch; y++)
     for (int x=0; x<anzQuer; x++)
     {
       if (brett[x][y])    brett[x][y] = bleiben(x, y);
       else         brett[x][y] = entstehen(x, y);
     }
   }

   public boolean bleiben (int x, int y)
   {
     if (brettNachbarn[x][y]==2) return true;
     if (brettNachbarn[x][y]==3) return true; 
     return false;
   }

   public boolean entstehen (int x, int y)
   {
     if (brettNachbarn[x][y]==3) return true;
     return false;
   }

//****************************************************
// Für jedes Feld wird die Anzahl der Nachbarn gezählt
//****************************************************

   public void zaehlen()
   {
     int xx, yy, anz;
     for (int y=0; y<anzHoch; y++)
     for (int x=0; x<anzQuer; x++)
     {
       anz = 0;
       for (int dx=-1; dx<2; dx++)
       for (int dy=-1; dy<2; dy++)
       {
         if (dx==0 && dy==0) continue;
         xx = x + dx;
         yy = y + dy;
         if (xx<0)        xx = anzQuer-1;
         if (xx>anzQuer-1)    xx = 0;
         if (yy<0)        yy = anzHoch-1;
         if (yy>anzHoch-1)    yy = 0;
         if(brett[xx][yy]) anz++;
       }
       brettNachbarn[x][y]= anz;
     }
   }
  
   public void paint (Graphics g)
   {
     g.setColor(Color.white);
     g.fillRect(0, 0, brettQuer, brettHoch);
     //g.setColor(Color.black);
     //g.drawRect(9, 9, brettQuer+1, brettHoch+1);
     g.setColor(Color.blue);
    
     for (int y=0; y<anzHoch; y++)
     for (int x=0; x<anzQuer; x++)
       if (brett[x][y]) g.fillRect(feld*x, feld*y, feld, feld);
   }

//********************
//  Verzögerung
//********************
   public void verzoegerung()
   {   try {Thread.sleep (msec);}
     catch(Exception e){}
   }
}
Code:
import java.awt.BorderLayout;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class LifeGui extends JPanel
{
//..............................
//Definition der Schaltflächen
//..............................
  
private static final long serialVersionUID = 1L;
LifeStartStop parent;
String label4, label5, label6;
JLabel label1 = new JLabel("  GAME OF LIFE");
JLabel label2 = new JLabel("-------------------- Klaus Wernicke -------------------");
JLabel label3;

JButton bStart, bNeu;

CheckboxGroup cbg;
Checkbox cbs1, cbs2;

JPanel[] panel = new JPanel[6];
GridLayout grid = new GridLayout (0, 1);
BorderLayout border = new BorderLayout();

Font font1 = new Font("VERDANA",Font.BOLD,20);
Font font2 = new Font("VERDANA",Font.BOLD,12);
Font font3 = new Font("VERDANA",Font.BOLD,10);

boolean bs1 = true;

//..........................
//Layout der Schaltflächen
//..........................

   public LifeGui()
   {
     textDE();
     setBackground(new Color(0xFF2887FD));
     grid = new GridLayout (0, 1);
     setKomponenten();
     setOpaque(false);
     setVisible(true);
   }

   public void setInterface(LifeStartStop simulation)
   {
     parent = simulation;
     System.out.println(parent);
   }
   public void setKomponenten()
   {
     cbg    = new CheckboxGroup(); // Zufall/Maus
     cbs1   = new Checkbox(label4, cbg, bs1);
     cbs2   = new Checkbox(label5, cbg, !bs1);
    
     bStart    = new JButton(" S T A R T ");
     bStart.setBackground(Color.green);
     bNeu   = new JButton(label6);
     bNeu.setBackground(Color.yellow);
    
     setFont(font2);
     label1.setFont(font1);
     label2.setFont(font3);
    
     for(int i=0; i< 6; i++)
     {
       panel[i] = new JPanel();
       panel[i].setOpaque(false);
     }
    
     this.setOpaque(false);
     this.setLayout(new GridLayout(4, 1));
     this.add(panel[0]);
     this.add(panel[1]);
     this.add(panel[2]);
     this.add(panel[3]);
    
     panel[0].setLayout(new GridLayout(2, 1));
     panel[0].add(label1);
     panel[0].add(label2);
    
     panel[2].setLayout(new GridLayout(3, 1));
     panel[2].add(label3);
     panel[2].add(cbs1);
     panel[2].add(cbs2);
    
     panel[3].setLayout(new GridLayout(1, 2));
     panel[3].add(panel[4]);
     panel[3].add(panel[5]);
    
     panel[4].setLayout(new GridBagLayout());
     panel[4].add(bStart);
     panel[5].setLayout(new GridBagLayout());
     panel[5].add(bNeu);
  
     bStart.addActionListener
     (new ActionListener()
     {   public void actionPerformed(ActionEvent e)
       {   System.out.println("Start vorher");
         parent.setLaufen(true);
         System.out.println("Start nachher");
       }});
    
     /*
      bStart.addActionListener
     (new ActionListener()  // Start-Button
     {   public void actionPerformed(ActionEvent e)
       {
         boolean lauf = parent.getLaufen();
         if(lauf) bStart.setText(text[4]);
         else
         {
           bStart.setText("S T O P");
           manager.setzeSpezies();          
         }
         parent.setLaufen(!lauf);  
       }});
      */
    
     bNeu.addActionListener
     (new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
       {    
         System.out.println("neu vorher");
         parent.brettLeer();
         parent.setLaufen(false);
         repaint();
         System.out.println("neu nachher");
       }});
   }  
    
   public void textDE()
   {
     label3 = new JLabel("Setze neue Zellen");
     label4 = "nach dem Zufallsprinzip";
     label5 = "mit der Maus";
     label6 = "neu";
   }
}
Code:
public interface LifeStartStop
{
   public void brettLeer();
   public void setLaufen(boolean lauf);
}
 

Meniskusschaden

Top Contributor
Ich denke, das Problem ist, dass du zwei LifeGui-Instanzen erzeugst. Eine im Konstruktor von LifeMain und eine im Konstruktor von LifeSimulation. Bei der ersten rufst du setInterface() nicht auf, so dass die Variable parent dieser LifeGui-Instanz null ist. Wenn du wie folgt eine Zeile einfügst, funktioniert es besser. Allerdings gibt es dann immer noch zwei LifeGui-Instanzen, was sicher nicht Sinn der Sache ist.
Java:
        gui = new LifeGui();
        gui.setInterface(simulation);  // diese Zeile in LifeMain einfügen
        gui.setBackground(new Color(220, 165, 155));
 

Kanitrino

Bekanntes Mitglied
Herzlichen Dank, darauf wäre ich selbst nie gekommen !

Ich möchte das Spielbrett und daneben die GUI zeichnen. Ich hatte die Main mal in eine (Sockel-) Applikation ausgegliedert, um immer die Option zu haben, das Programm leicht in ein Applet umwandeln zu können, indem ich es stattdessen von einem entsprechenden Sockel-Applet aufrufen lasse.

Ich hatte nun die Idee, die beiden Graphiken - jeweil ein JPanel - in der Sockel-Applikation zusammenzufügen. Da dazu nur ihre JPanel-Eigenschaften brauche, wollte ich das parent-Objekt auch nicht direkt im Konstruktor übergeben, sondern in einer Extra-Methode.

Es wäre also doch besser, die GUI bereits in LifeSimulation einzubauen; das hatte mir aber auch etwas Kopfzerbrechen bereitet (graphics g ist doch auch eigentlich ein JPanel, und dem füge ich das GUI-JPanel hinzu (?!)), und so hatte ich mich für den - scheinbar - einfacheren Weg entschieden.

Naja, nun sollte ich doch den anderen Weg gehen.

Vielen Dank nochmal und Gute Nacht !
 

Kanitrino

Bekanntes Mitglied
Hurra, es läuft !

Ich habe es einfach so gemacht, dass ich, anstatt in LifeMain je ein neues Objekt der JPanel-Klassen LifeSimulation ("simulation") und LifeGui ("gui") zu schaffen, nur eines von LifeSimulation erzeugt habe. Über dieses habe ich dann das Objekt gui aus LifeSimulation aufgerufen, um es zu zeichnen :
Code:
frame.add(simulation.gui, BorderLayout.EAST);
.

Das funktioniert ! (Leider kann man hier keine jubelnden Smileys erzeugen)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
L FX-Projekt: fast leere Fensterausgabe ohne Fehlermeldung AWT, Swing, JavaFX & SWT 6
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 0
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 8
Z Fehlermeldung AWT, Swing, JavaFX & SWT 3
N Verständnisproblem bei Fehlermeldung bei "showMessage" AWT, Swing, JavaFX & SWT 3
R AWT Ich verstehe die Fehlermeldung nicht. Was habe ich falsch gemacht? AWT, Swing, JavaFX & SWT 85
L java.lang.NullPointerException - Fehlermeldung AWT, Swing, JavaFX & SWT 2
J Event Handling Input auf String testen, Fehlermeldung ausgeben AWT, Swing, JavaFX & SWT 4
S JavaFX Fehlermeldung Root hasn't been set AWT, Swing, JavaFX & SWT 2
T Unerklärliche Fehlermeldung AWT, Swing, JavaFX & SWT 5
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
F Unverständliche Fehlermeldung AWT, Swing, JavaFX & SWT 5
J Fehlermeldung adding a window to a container AWT, Swing, JavaFX & SWT 9
C Swing Fehlermeldung in einem Dialog anzeigen AWT, Swing, JavaFX & SWT 2
S SWT Fehlermeldung ausgeben AWT, Swing, JavaFX & SWT 7
D SWT "Hello World" - Fehlermeldung AWT, Swing, JavaFX & SWT 8
DARK_ZERATO2 GUI Fehlermeldung mit sound AWT, Swing, JavaFX & SWT 4
ModellbahnerTT Fehlermeldung: StackOverflowError AWT, Swing, JavaFX & SWT 8
O Fehlermeldungs-Fenster je nach Fehlermeldung AWT, Swing, JavaFX & SWT 2
R Fehlermeldung: ". is not abstract" AWT, Swing, JavaFX & SWT 5
B Swing Fehlermeldung AWT, Swing, JavaFX & SWT 6
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
M JTable. Beim löschen der Zeilen Fehlermeldung AWT, Swing, JavaFX & SWT 22
D Unverständliche Fehlermeldung AWT, Swing, JavaFX & SWT 5
A Fehlermeldung wegen FocusTraversalKeys AWT, Swing, JavaFX & SWT 4
A Fehlermeldung beim Bild speichern AWT, Swing, JavaFX & SWT 4
M Nutzer interface Programmieren AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
J Swing Erstellung eines User Interface AWT, Swing, JavaFX & SWT 2
D JavaFX Interface Initializable - Was machen die Parameter in der Methode inizializeable() ? AWT, Swing, JavaFX & SWT 4
G JavaFX Nutzen von Interface Callback<P,R> AWT, Swing, JavaFX & SWT 2
S Interface Printable AWT, Swing, JavaFX & SWT 5
K Verständnisproblem mit Interface AWT, Swing, JavaFX & SWT 3
trash Dynamisches Interface AWT, Swing, JavaFX & SWT 6
C Interface für JButtons,... AWT, Swing, JavaFX & SWT 7
A User Interface aufteilen? AWT, Swing, JavaFX & SWT 3
B In eine Konsolenanwendung ein Interface einbinden AWT, Swing, JavaFX & SWT 5
J instanceof von einem Interface und aufrufen der Methoden AWT, Swing, JavaFX & SWT 5
S Sowas wie ein drawable-interface? AWT, Swing, JavaFX & SWT 3
B Scrollable - Wie benutzt man das Interface richtig? AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben