Hallo Freunde!
Ich habe eine Klasse "Window", deren Instanzen, wie der Name sagt, Fenster sind. Da ich aber nicht für jedes Panel und Label den Kommando in den Konstruktor schreiben möchte, habe ich gedacht, ich schreibe eine Methode "create_entry", die die Panels und Labels uebergeben bekommt.
Um leichter auf diese zuzugreifen, speicher ich sie in einem Array. Mein Problem ist jetzt, dass ich die Methode create_entry im Konstruktor aufrufe, dort werden die Attribute initialisiert und im Konstruktor das soeben erstellte Panel im main-Frame packen will. Hierbei kommt aber eine NullPointerException. Ich habe die Vermutung, dass das daran liegt, dass die Panels und labels nur Methodenintern initialisiert werden, sprich, außerhalb der Methode nicht genutzt werden können. Wie kann ich das verhindern?
Hier mein Code:
Ich hoffe doch und bin mir sicher, dass ihr mir weiterhelfen könnt
Viele Grüße,
Jan
Ich habe eine Klasse "Window", deren Instanzen, wie der Name sagt, Fenster sind. Da ich aber nicht für jedes Panel und Label den Kommando in den Konstruktor schreiben möchte, habe ich gedacht, ich schreibe eine Methode "create_entry", die die Panels und Labels uebergeben bekommt.
Um leichter auf diese zuzugreifen, speicher ich sie in einem Array. Mein Problem ist jetzt, dass ich die Methode create_entry im Konstruktor aufrufe, dort werden die Attribute initialisiert und im Konstruktor das soeben erstellte Panel im main-Frame packen will. Hierbei kommt aber eine NullPointerException. Ich habe die Vermutung, dass das daran liegt, dass die Panels und labels nur Methodenintern initialisiert werden, sprich, außerhalb der Methode nicht genutzt werden können. Wie kann ich das verhindern?
Hier mein Code:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Window extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
protected JFrame main;
protected String title;
protected JLabel[] label;
protected JLabel[] dots;
protected JTextField[] text;
protected JPanel[] panel;
public Window(String t, int labels, int panels, int dot, int nr_text) {
title=t;
/*
* Initialize Window-Properties
*/
main=new JFrame(t);
this.label=new JLabel[labels];
this.dots=new JLabel[dot];
this.text=new JTextField[nr_text];
this.panel=new JPanel[panels];
/*
* Initialize Entries
*/
create_entry(label[0], "Beginn: ", text[0], dots[0], text[1], panel[0]); // begin entry
main.add(panel[0]);
main.pack();
main.setVisible(true);
}
/*
* Diese Funktionen generieren einen Zeileneintrag.
* Beispiel:
* Beginn: XXX : XXX
*/
public void create_entry(JLabel name, String entry, JTextField hours, JLabel dots, JTextField mins, JPanel p) {
name=new JLabel(entry);
hours=new JTextField(4);
dots=new JLabel(" : ");
mins=new JTextField(4);
p=new JPanel();
p.add(name);
p.add(hours);
p.add(dots);
p.add(mins);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
String title="Testfenster 1 ";
Window main=new Window(title, 20, 20, 5, 14);
}
}
Ich hoffe doch und bin mir sicher, dass ihr mir weiterhelfen könnt
Viele Grüße,
Jan