Holladerwaldelf
Grünschnabel
Dies ist vermutlich eine Standardfrage, ich habe allerdings nirgendwo im Netz eine weiterhelfende Antwort gefunden. Vielleicht kann mir hier ein netter Mensch weiter helfen.
Ich habe das unten stehende (einfache) Testprogramm geschrieben, bei dem nichts weiter passieren soll, als dass im TestField "TestF" (das eigentlich nichts anderes als ein JTextField ist) ein Text erscheint. Allerdings wird "TestF" nicht der public static void main - Methode erzeugt, sondern durch das AnzeigePanel (das nicht viel mehr als ein JPanel) "AusgabePanel" ("AusgabePanel" wird in der main-Methode erzeugt).
Beim Ausführen von
gibt es die "Exception in thread "main" java.lang.NullPointerException" - Fehlermeldung.
So wie ich es verstehe, ist also das "TestF"-Objekt noch gar nicht erzeugt oder der Pointer der "TestF"-Variablen zeigt noch nicht auf das Objekt (das aber schon da ist), deshalb kann die Methode des Objekts nicht ausgeführt werden.
Kann mir jemand helfen? Die Einbettung des "TestF"-Objekts in das "AusgabePanel"-Objekt ist beabsichtigt. Gibt es einen eleganten Weg da raus?
Ich habe das unten stehende (einfache) Testprogramm geschrieben, bei dem nichts weiter passieren soll, als dass im TestField "TestF" (das eigentlich nichts anderes als ein JTextField ist) ein Text erscheint. Allerdings wird "TestF" nicht der public static void main - Methode erzeugt, sondern durch das AnzeigePanel (das nicht viel mehr als ein JPanel) "AusgabePanel" ("AusgabePanel" wird in der main-Methode erzeugt).
Beim Ausführen von
Code:
AusgabePanel.TestF.putData();
So wie ich es verstehe, ist also das "TestF"-Objekt noch gar nicht erzeugt oder der Pointer der "TestF"-Variablen zeigt noch nicht auf das Objekt (das aber schon da ist), deshalb kann die Methode des Objekts nicht ausgeführt werden.
Kann mir jemand helfen? Die Einbettung des "TestF"-Objekts in das "AusgabePanel"-Objekt ist beabsichtigt. Gibt es einen eleganten Weg da raus?
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Test{
public static void main ( String[] args )
{
JFrame AusgabeFrame = new JFrame();
AusgabeFrame.setBounds(0,0,500,500);
AnzeigePanel AusgabePanel = new AnzeigePanel();
AusgabeFrame.getContentPane().add(AusgabePanel);
AusgabePanel.TestF.putData();
AusgabeFrame.setVisible(true);
}
}
interface AnzeigeInt {
void putData();
}
class AnzeigePanel extends JPanel implements AnzeigeInt {
TestField TestF;
AnzeigePanel() {
super();
JLabel TestLabel = new JLabel("Test");
add(TestLabel);
TestField TestF = new TestField();
add(TestF);
}
public void putData(){
TestF.putData();
}
}
class TestField extends JTextField implements AnzeigeInt {
TestField() {
super();
}
public void putData(){
setText("Hello World");
}
}