Ich habe folgendes Problem: für ein programm brauch ich ein fenster das Checkboxes enthält und dären zustände speichert dafür hab ich 5 klassen 1. die hauptklasse die die anderen aufruft, 2. das 1.frame mit dem man 3. das configurations frame aufruft 4. die Daten-klasse wo die daten, die gespeichert werden, sind und 5. den WindowsClosingAdapter die Quellcodes:
das ist der fehlercode:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at settings.umform(settings.java:68)
at settings.<init>(settings.java:21)
at OnePCChat.settings(OnePCChat.java:22)
at ChatFrame.actionPerformed(ChatFrame.java:72)
at javax.swing.JTextField.fireActionPerformed(JTextField.java:492)
at javax.swing.JTextField.postActionEvent(JTextField.java:705)
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:820)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1633)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2886)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6040)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4502)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
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)
hoffe mir kann jemand helfen.
Java:
import java.awt.*;
import java.io.*;
public class haupt {
Daten dat;
//Konstruktor
public void haupt(){
}
//Startmethode
public static void main(String[] args) {
haupt ds = new haupt();
ChatFrame f = new ChatFrame(ds);
//ds.speichern();
ds.laden();
if(ds.dat==null)ds.dat = new Daten();
}
public void settings(){
haupt ds = new haupt();
settings se = new settings(ds);
}
public void speichern(){
try{
System.out.println("speichern!");
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("Speicher.dat"));
ObjectOutputStream os = new ObjectOutputStream(out);
os.writeObject(dat);
os.close();
} catch (IOException e) {
System.err.println(e.toString());
}
}
public void laden(){
System.out.println("laden!");
try {
ObjectInputStream is = new ObjectInputStream(new FileInputStream("Speicher.dat"));
dat = (Daten) is.readObject();
is.close();
} catch (ClassNotFoundException e) {
System.err.println(e.toString());
} catch (IOException e) {
System.err.println(e.toString());
}
}
}
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JPasswordField;
public class ChatFrame extends Frame implements ActionListener {
haupt dsp;
TextField tf;
JPasswordField passwortFeld;
String code="feueralarm";
String codea;
boolean sperre;
//Konstruktor
public ChatFrame(haupt d) {
super("programm beender beenden");
dsp=d;
//addWindowListener(new WindowClosingAdapter(true));
setLocation(600,10);
//Größe setzen(X,Y)
setSize(500,500);
passwortFeld = new JPasswordField();
passwortFeld.setText("");
passwortFeld.setEchoChar('?');
add("South",passwortFeld);
tf = new TextField("Code zum deacktivieren des killing-prozesses",40);
tf.addActionListener(this);
passwortFeld.addActionListener(this);
//add("South",tf);
//Sichtbar machen
setVisible(true);
//Das StandardLayout im Frame ist BorderLayout!
add("North",new Label("Die Programme Firefox, InternetExplorer, Minecraft und der Taskmanager werden vorübergehend gesperrt"));
//add("West",new Label("wo der soeben gewählte punkt higesetzt werden soll."));
//Zeigt den Frame ( f.hide()versteckt ihn wieder! )
show();
}
public void actionPerformed(ActionEvent event){
Object obj = event.getSource();
// if (obj.equals(passwortFeld)){
System.out.println("step1");
//Abfrage des Textes
codea=event.getActionCommand();
codea=passwortFeld.getText();
if(codea.equals(code)){
System.out.println("aus");
addWindowListener(new WindowClosingAdapter(true));
sperre=true;
repaint();
setBackground(Color.green);}
else{
setBackground(Color.red);}
//}
if(sperre==true){
if(codea.equals("settings")){
dsp.settings();}}
if(sperre==true){
if(codea.equals("stop")){
System.exit(0);}}
}
public void paint(Graphics g){
}
}
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class settings extends JFrame implements ActionListener,ItemListener {
haupt dsp;
JButton exit,save;
Checkbox MF,IE,TM,MC;
boolean ItemActivate[]=new boolean [5];
//Konstruktor
public settings(OnePCChat d) {
super("settings");
umform();
setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
GridLayout G = new GridLayout(6,1);
setLayout(G);
//setLayout(new FlowLayout());
exit = new JButton( "Schließen" );
exit.addActionListener(this);
save = new JButton( "Speichern" );
save.addActionListener(this);
MF = new Checkbox ("Mozilla Firefo",ItemActivate[0]);
IE = new Checkbox ("Internet Explorer",ItemActivate[1]);
MC = new Checkbox ("Minecraft",ItemActivate[2]);
TM = new Checkbox ("Task Manager",ItemActivate[3]);
add(MF);
add(IE);
add(MC);
add(TM);
add(save);
add(exit);
dsp=d;
setLocation(600,10);
//Größe setzen(X,Y)
setSize(500,500);
//Sichtbar machen
setVisible(true);
show();
}
public void umform(){
for(int cc=0;cc<5;cc++){
if(dsp.dat.ItemActivate[cc]=="enable"){ItemActivate[cc]=true;
}
else{ItemActivate[cc]=false;
}
}
}
public void itemStateChanged(ItemEvent arg0) {
}
public void actionPerformed(ActionEvent e){
Object obj = e.getSource();
System.out.println("step1");
if(e.getSource()==exit)hide();
if(e.getSource()==save)dsp.speichern();
//Abfrage des Textes
}
public void paint(Graphics g){
}
}
Java:
import java.io.*;
public class Daten implements Serializable {
String ItemActivate[] = new String[50];
public void Daten(){
}
}
Java:
/**
* @(#)WindowClosingAdapter.java
*
*
* @author
* @version 1.00 2010/4/15
*/
import java.awt.*;
import java.awt.event.*;
public class WindowClosingAdapter extends WindowAdapter {
//bei true wird das System beendet
private boolean exitSystem;
//Konstuktor der auch aufgerufen wird!
public WindowClosingAdapter (boolean exitSystem){
//System.out.println("Konstruktor mit Parameter");
this.exitSystem = exitSystem;
}
//Konstruktor
public WindowClosingAdapter(){
this(false);
//System.out.println("Konstruktor");
}
public void windowClosing(WindowEvent event ){
System.out.println("windowClosing");
event.getWindow().setVisible(false);
event.getWindow().dispose();
if(exitSystem){
System.exit(0);
}
}
}
das ist der fehlercode:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at settings.umform(settings.java:68)
at settings.<init>(settings.java:21)
at OnePCChat.settings(OnePCChat.java:22)
at ChatFrame.actionPerformed(ChatFrame.java:72)
at javax.swing.JTextField.fireActionPerformed(JTextField.java:492)
at javax.swing.JTextField.postActionEvent(JTextField.java:705)
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:820)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1633)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2886)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6040)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4502)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
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)
hoffe mir kann jemand helfen.