Klassenübergriff

marcocux

Mitglied
Hallo,

ich schreibe gerade ein Programm, wobei einzelne Methoden in andere Klassen übergreifen.

Es ist so, dass in ein Textfeld der Name des Hotels eingegeben werden kann, mit ok, wird dieser dann im String "s" abgespeichert. Jetzt kommts: Der String es soll eine ein "Choice-Formular" der Klasse "Athlet_erstellen" gespeichert werden.

Hier der Code:

Java:
public void button_create_hotel_ActionPerformed(ActionEvent evt) {
    String s = new String();
    s = textField_createhotel.getText();
    ath_erst.choice_create_hotel.add(s);
  }

ath_erst ist in diesem Fall Athlet_erstellen (als andere Klasse).

Bei Knopf drücken bekomme ich folgende Null-Pointer-Exception:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at hotel_erstellen.button_create_hotel_ActionPerformed(hotel_erstellen.java:68)
	at hotel_erstellen$2.actionPerformed(hotel_erstellen.java:54)
	at java.awt.Button.processActionEvent(Button.java:392)
	at java.awt.Button.processEvent(Button.java:360)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Woran kann das liegen?

Danke schonmal im Vorraus!

LG Marco:bae:
 

eRaaaa

Top Contributor
mal davon abgesehen, dass
Code:
String s = new String();
völlig überflüssig ist, könnte textField_createhotel z.B.
Code:
null
sein ?! Mehr Code?!
 
I

irgendjemand

Gast
meine glaskugel sagt

ZEIG UNS MEHR CODE

sorry ... aber mit dem stück da können wir nichts anfangen ...

aus dem stacktrace lesen ich aber das vermutlich irgend ein objekt was du manipulieren willst null sein wird ... vermutlich durch deine vielen anonymen klassen ala
Java:
addActionLister(new ActionLister() {});
ganz böses design
 
M

Marcinek

Gast
Entweder ist
Code:
textField_createhotel
oder
Code:
ath_erst
oder
Code:
choice_create_hotel
null
 

marcocux

Mitglied
Hey,

hm also es kann eigentlich nicht null sein, dann wenn ich etwas in das TextFeld eingebe, dann bekomme ich die Runtime Exeption ja auch.
Hier mal "mehr" Code:

Hotel erstellen:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;



public class hotel_erstellen extends Frame {
public athlet_erstellen ath_erst;
  // Anfang Attribute
  private Label label1 = new Label();
  private Label label2 = new Label();
  private TextField textField_createhotel = new TextField();
  private Button button_create_hotel = new Button();
  // Ende Attribute

  public hotel_erstellen(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 480;
    int frameHeight = 182;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    label1.setBounds(16, 8, 170, 25);
    label1.setText("Hotel hinzufügen:");
    label1.setFont(new Font("MS Sans Serif", Font.BOLD, 18));
    cp.add(label1);
    label2.setBounds(16, 75, 108, 16);
    label2.setText("Name des Hotels:");
    label2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label2);
    textField_createhotel.setBounds(128, 72, 313, 24);
    textField_createhotel.setText("");
    cp.add(textField_createhotel);
    button_create_hotel.setBounds(168, 104, 137, 33);
    button_create_hotel.setLabel("OK");
    button_create_hotel.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_create_hotel_ActionPerformed(evt);
      }
    });
    cp.add(button_create_hotel);


    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  public void button_create_hotel_ActionPerformed(ActionEvent evt) {
    String s = new String();
    s = textField_createhotel.getText();
    ath_erst.choice_create_hotel.add(s);
  }

  public void button_schliessen_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    dispose();
  }

  // Ende Methoden

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

Athleten_erstellen:
Java:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable.*;
 import javax.swing.*;
 import javax.swing.table.*;



public class athlet_erstellen extends Frame {
  // Anfang Attribute
  public boolean tabelleangelegt = false;
  private Label label_athlet_hinzufuegen = new Label();
  private Label label_create_name = new Label();
  private TextField textField_create_name = new TextField();
  private Label label_create_vorname = new Label();
  private TextField textField_create_vorname = new TextField();
  private Label label_create_nationalitaet = new Label();
  private TextField textField_create_nationalitaet = new TextField();
  private Label label1 = new Label();
  private Choice choice_create_disziplin = new Choice();
  private Label label2 = new Label();
  private Choice choice_create_anreisetag = new Choice();
  private Choice choice_create_anreisemonat = new Choice();
  private Label label3 = new Label();
  private Choice choice_create_abreisetag = new Choice();
  private Choice choice_create_abreisemonat = new Choice();
  public Label label_create_hotel = new Label();
  public Choice choice_create_hotel = new Choice();
  private Label label4 = new Label();
  private Choice choice_create_zimmerart = new Choice();
  private Button button_create_athleterstellen = new Button();
  private Label label_create_zahlweise = new Label();
  private Choice choice_create_zahlweise = new Choice();
  // Ende Attribute

  public athlet_erstellen(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 652;
    int frameHeight = 439;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    label_athlet_hinzufuegen.setBounds(24, 8, 176, 25);
    label_athlet_hinzufuegen.setText("Athlet hinzufügen:");
    label_athlet_hinzufuegen.setFont(new Font("MS Sans Serif", Font.BOLD, 18));
    cp.add(label_athlet_hinzufuegen);
    label_create_name.setBounds(43, 61, 40, 16);
    label_create_name.setText("Name:");
    label_create_name.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label_create_name);
    textField_create_name.setBounds(88, 56, 353, 24);
    textField_create_name.setText("");
    cp.add(textField_create_name);
    label_create_vorname.setBounds(24, 100, 58, 16);
    label_create_vorname.setText("Vorname:");
    label_create_vorname.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label_create_vorname);
    textField_create_vorname.setBounds(88, 96, 353, 24);
    textField_create_vorname.setText("");
    cp.add(textField_create_vorname);
    label_create_nationalitaet.setBounds(8, 140, 70, 16);
    label_create_nationalitaet.setText("Nationalität:");
    label_create_nationalitaet.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label_create_nationalitaet);
    textField_create_nationalitaet.setBounds(88, 136, 353, 24);
    textField_create_nationalitaet.setText("");
    cp.add(textField_create_nationalitaet);
    label1.setBounds(24, 182, 53, 16);
    label1.setText("Disziplin:");
    label1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label1);
    choice_create_disziplin.setBounds(88, 176, 353, 24);
    cp.add(choice_create_disziplin);
    choice_create_disziplin.addItem("Disziplin wählen");
    choice_create_disziplin.addItem("100m Sprint");
    choice_create_disziplin.addItem("200m Sprint");
    choice_create_disziplin.addItem("400m Sprint");
    choice_create_disziplin.addItem("800m");
    choice_create_disziplin.addItem("1.000m");
    choice_create_disziplin.addItem("1500m");
    choice_create_disziplin.addItem("1 Meile");
    choice_create_disziplin.addItem("3.000m");
    choice_create_disziplin.addItem("5.000m");
    choice_create_disziplin.addItem("10.000m");
    choice_create_disziplin.addItem("4x100m Staffel");
    choice_create_disziplin.addItem("4x400m Staffel");
    choice_create_disziplin.addItem("3x800m Frauen");
    choice_create_disziplin.addItem("3x1.000m Männer");
    choice_create_disziplin.addItem("100m Hürden Frauen");
    choice_create_disziplin.addItem("110m Hürden Männer");
    choice_create_disziplin.addItem("3.000m Hinderniss");
    choice_create_disziplin.addItem("Weitsprung");
    choice_create_disziplin.addItem("Dreisprung");
    choice_create_disziplin.addItem("Hochsprung");
    choice_create_disziplin.addItem("Stabhochsprung");
    choice_create_disziplin.addItem("Kugelstoßen");
    choice_create_disziplin.addItem("Diskus");
    choice_create_disziplin.addItem("Speerwurf");
    choice_create_disziplin.addItem("Hammerwurf");
    label2.setBounds(8, 339, 68, 16);
    label2.setText("Anreisetag:");
    label2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label2);
    choice_create_anreisetag.setBounds(88, 336, 41, 24);
    choice_create_anreisetag.add("1");
    choice_create_anreisetag.add("2");
    choice_create_anreisetag.add("3");
    choice_create_anreisetag.add("4");
    choice_create_anreisetag.add("5");
    choice_create_anreisetag.add("6");
    choice_create_anreisetag.add("7");
    choice_create_anreisetag.add("8");
    choice_create_anreisetag.add("9");
    choice_create_anreisetag.add("10");
    choice_create_anreisetag.add("11");
    choice_create_anreisetag.add("12");
    choice_create_anreisetag.add("13");
    choice_create_anreisetag.add("14");
    choice_create_anreisetag.add("15");
    choice_create_anreisetag.add("16");
    choice_create_anreisetag.add("17");
    choice_create_anreisetag.add("18");
    choice_create_anreisetag.add("19");
    choice_create_anreisetag.add("20");
    choice_create_anreisetag.add("21");
    choice_create_anreisetag.add("22");
    choice_create_anreisetag.add("23");
    choice_create_anreisetag.add("24");
    choice_create_anreisetag.add("25");
    choice_create_anreisetag.add("26");
    choice_create_anreisetag.add("27");
    choice_create_anreisetag.add("28");
    choice_create_anreisetag.add("29");
    choice_create_anreisetag.add("30");
    choice_create_anreisetag.add("31");
    cp.add(choice_create_anreisetag);
    choice_create_anreisemonat.setBounds(144, 336, 105, 24);
    choice_create_anreisemonat.add("Januar");
    choice_create_anreisemonat.add("Februar");
    choice_create_anreisemonat.add("März");
    choice_create_anreisemonat.add("April");
    choice_create_anreisemonat.add("Mai");
    choice_create_anreisemonat.add("Juni");
    choice_create_anreisemonat.add("July");
    choice_create_anreisemonat.add("August");
    choice_create_anreisemonat.add("September");
    choice_create_anreisemonat.add("Oktober ");
    choice_create_anreisemonat.add("November");
    choice_create_anreisemonat.add("Dezember");
    cp.add(choice_create_anreisemonat);
    label3.setBounds(8, 379, 69, 16);
    label3.setText("Abreisetag:");
    label3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label3);
    choice_create_abreisetag.setBounds(88, 376, 41, 24);
    choice_create_abreisetag.add("1");
    choice_create_abreisetag.add("2");
    choice_create_abreisetag.add("3");
    choice_create_abreisetag.add("4");
    choice_create_abreisetag.add("5");
    choice_create_abreisetag.add("6");
    choice_create_abreisetag.add("7");
    choice_create_abreisetag.add("8");
    choice_create_abreisetag.add("9");
    choice_create_abreisetag.add("10");
    choice_create_abreisetag.add("11");
    choice_create_abreisetag.add("12");
    choice_create_abreisetag.add("13");
    choice_create_abreisetag.add("14");
    choice_create_abreisetag.add("15");
    choice_create_abreisetag.add("16");
    choice_create_abreisetag.add("17");
    choice_create_abreisetag.add("18");
    choice_create_abreisetag.add("19");
    choice_create_abreisetag.add("20");
    choice_create_abreisetag.add("21");
    choice_create_abreisetag.add("22");
    choice_create_abreisetag.add("23");
    choice_create_abreisetag.add("24");
    choice_create_abreisetag.add("25");
    choice_create_abreisetag.add("26");
    choice_create_abreisetag.add("27");
    choice_create_abreisetag.add("28");
    choice_create_abreisetag.add("29");
    choice_create_abreisetag.add("30");
    choice_create_abreisetag.add("31");
    cp.add(choice_create_abreisetag);
    choice_create_abreisemonat.setBounds(144, 376, 105, 24);
    choice_create_abreisemonat.add("Januar");
    choice_create_abreisemonat.add("Februar");
    choice_create_abreisemonat.add("März");
    choice_create_abreisemonat.add("April");
    choice_create_abreisemonat.add("Mai");
    choice_create_abreisemonat.add("Juni");
    choice_create_abreisemonat.add("July");
    choice_create_abreisemonat.add("August");
    choice_create_abreisemonat.add("September");
    choice_create_abreisemonat.add("Oktober ");
    choice_create_abreisemonat.add("November");
    choice_create_abreisemonat.add("Dezember");
    cp.add(choice_create_abreisemonat);
    label_create_hotel.setBounds(40, 216, 35, 16);
    label_create_hotel.setText("Hotel:");
    label_create_hotel.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label_create_hotel);
    choice_create_hotel.setBounds(88, 216, 353, 24);
    choice_create_hotel.add("Hotel1");
    cp.add(choice_create_hotel);
    label4.setBounds(16, 256, 63, 16);
    label4.setText("Zimmerart:");
    label4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label4);
    choice_create_zimmerart.setBounds(88, 256, 353, 24);
    cp.add(choice_create_zimmerart);
    choice_create_zimmerart.addItem("Einzelzimmer");
    choice_create_zimmerart.addItem("Doppelzimmer");
    button_create_athleterstellen.setBounds(368, 344, 153, 41);
    button_create_athleterstellen.setLabel("Athleten hinzufügen");
    button_create_athleterstellen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_create_athleterstellen_ActionPerformed(evt);
      }
    });
    cp.add(button_create_athleterstellen);
    label_create_zahlweise.setBounds(16, 296, 64, 16);
    label_create_zahlweise.setText("Zahlweise:");
    label_create_zahlweise.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label_create_zahlweise);
    choice_create_zahlweise.setBounds(88, 296, 353, 24);
    cp.add(choice_create_zahlweise);
    choice_create_zahlweise.addItem("Selbstzahler");
    choice_create_zahlweise.addItem("PP Sports");
   //DefaultTableModel tabModel;
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  public void button_create_athleterstellen_ActionPerformed(ActionEvent evt) {
  if(tabelleangelegt == false)
  {
  String[][] rowData = {};
  String[] columnNames = {
    "Name","Vorname","Nationalität","Disziplin","Hotel","Zimmerart","Zahlweise", "Anreisetag","Abreisetag","Anwesenheit"};
  int numColumns = 9;
  JFrame f = new JFrame("Athleten Datentabelle");
  f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  DefaultTableModel tabModel;
  tabModel = new DefaultTableModel(rowData, columnNames);
  JTable table = new JTable( tabModel );
  f.add( new JScrollPane(table) );
  f.pack();
  f.setVisible( true );
  tabelleangelegt = true;
  Object[] ze = {"","","","","","","","","",""};
  tabModel.addRow(ze);
  int y=0; int x=0;
  String name = textField_create_name.getText();
  String vorname = textField_create_vorname.getText();
  String nationalitaet = textField_create_nationalitaet.getText();
  Object[] disziplin = choice_create_disziplin.getSelectedObjects();
  Object[] hotel = choice_create_hotel.getSelectedObjects();
  Object[] zimmerart = choice_create_zimmerart.getSelectedObjects();
  Object[] zahlweise = choice_create_zahlweise.getSelectedObjects();
  Object[] anreisetag = choice_create_anreisetag.getSelectedObjects();
  Object[] anreisemonat = choice_create_anreisemonat.getSelectedObjects();
  Object[] abreisetag = choice_create_abreisetag.getSelectedObjects();
  Object[] abreisemonat = choice_create_abreisemonat.getSelectedObjects();
  //String s = anreistag[0];

  table.setValueAt(name,0,0);
  table.setValueAt(vorname,0,1);
  table.setValueAt(nationalitaet,0,2);
  table.setValueAt(disziplin[0],0,3);
  if(hotel[0]==null)
  {
  table.setValueAt("Kein HOTEL!",0,4);
  }
  else
  {
  table.setValueAt(hotel[0],0,4);
  }
  table.setValueAt(zimmerart[0],0,5);
  table.setValueAt(zahlweise[0],0,6);
    // TODO hier Quelltext einfügen
  }
  }

  // Ende Methoden

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

Ich entschuldige mich schonmal vorab für meinen teils wirren programmierstil. Dafür gabs in der Schule schon immer Tadel :b

LG
 

njans

Top Contributor
Also als erstes: JAVA Tags müssen mit einem [\JAVA] enden (nicht das Slash vergessen)
Dann noch etwas: Java Konventionen einhalten. Variablen beschreibt man mit CamelCase, also textField_createhotel wird dann eher zu textFieldCreateHotel, wobei ein aussagekräftiger Name dawirklich Gold wert ist. Nebenbei Klassen sollten Nomen sein, so etwas wie hotel_erstellen sollte in Java heißen: HotelErsteller,a uch wenn der Namen furchtbar ist, denn es wird nicht klar, das was eigentlich ist.

Java:
String s = new String();
s = textField_createhotel.getText();
Kannst du zusammenfassen zu:
Java:
String s = textField_createhotel.getText();

Zur NPE, die dir geworfen wird:
Wird textField_createhotel initialisiert? Wie stehts mit ath_erst und ath_erst.choice_create_hotel ?

Mehr als das Fragen kann ich nicht, da ich nicht mehr Code einsehen kann.

Edit:
ath_erst wird niemals initialisiert.
 
Zuletzt bearbeitet:
I

irgendjemand

Gast
1) du importierst javax.swing.* und arbeitst dann mit AWT .. FAIL
2) "ath_erst" ist NULL !
3) krasser programmierstil
4) conventions = null ?
 

marcocux

Mitglied
Hi,

erstmal Danke. Also wie gesagt, es ist lange her als ich Java in der Schule gelernt habe, probiere mich nächstes Mal daran zu halten.
Ich will das Programm aber NICHT verkaufen, es soll mir nur meine Arbeit ein bisschen erleichtern. Prinzipiell reicht es für mich also, wenn es einfach nur funktioniert. :bae:

Nun meine Frage: Wenn ath_erst garnicht initialisiert wird, wie mache ich das dann ? :D Ok, doofe Frage, aber anders als wie ich das gemacht habe, also über private athlet_erstellen ath_erst aufzurufen, ist es mir nich bekannt.

Bitte um Hilfe.

LG Marco
 

njans

Top Contributor
Java:
public athlet_erstellen ath_erst = new athlet_erstellen();
Machst du doch sonst auch die ganze Zeit ^^
 

marcocux

Mitglied
Hi,

hm weiß nich. Bekomme dann immer:

Java:
hotel_erstellen.java:9:39: cannot find symbol
symbol  : constructor athlet_erstellen()
location: class athlet_erstellen
   public athlet_erstellen ath_erst = new athlet_erstellen();
                                      ^

Müsste dann doch eigentlich gehen, nich war?

LG
 

eRaaaa

Top Contributor
Nein
schau dir doch mal den Konstruktor an:
Code:
public athlet_erstellen(String title)

Und du hast es doch in deiner anderen main auch schon :
Java:
  public static void main(String[] args) {
    new athlet_erstellen("athlet_erstellen");
  }

Erst mal Grundlagen aneignen, dann GUI!
 

Neue Themen


Oben