ich hatte mein Programm bis jetzt so, dass ich eine Menge JInternalFrames hatte - funktionierte auch so weit alles, aber jetzt sollen die JInternalFrames allein da stehen, also ohne ein Frame ringsherum, ohne Menüzeile.
Wie mache ich das denn jetzt am besten?
Ich habe mit Frame herumexperimentiert, da geht es aber schon los, dass man keine InputMaps benutzen kann und irgendwie funktioniert der KeyListener auch nicht und naja, nu bin ich am Verzweifeln, wie ich das ganze umsetzen soll????
Keine Verbindung (login-password): java.lang.NullPointerException
java.lang.NullPointerException
at forms.Login$1.actionPerformed(Login.java:80)
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)
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.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)
Code:
try{
PreparedStatement stmPass = (PreparedStatement) Forms.cn.prepareStatement("SELECT passwort FROM nutzer WHERE nutz_name = ?");
stmPass.setString(1, benName);
Forms.rs = stmPass.executeQuery();
if(Forms.rs.next()){
String passw = Forms.rs.getString(1);
passw = passw.trim();
if(count < 2){
if(passw.equals(passStr)){
Forms.login.setVisible(false); //<- Zeile 80
Forms.txtBenName.setText(null);
Forms.txtPass.setText(null);
Forms.start1.setVisible(true);
//Start1.menu();
}
else{
Message.loginPass(); //If the password is wrong show message.
Forms.txtBenName.setText(null);
Forms.txtPass.setText(null);
count++;
}
}
else{
Message.login(); //If the password is wrong for the third time show message and close application.
}
}
}catch(Exception ex){
System.out.println("Keine Verbindung (login-password): " + ex);
ex.printStackTrace();
}
@SuppressWarnings("serial")
public class Forms extends JFrame{
public static Connection cn = null;
public static Statement st = null;
public static ResultSet rs = null;
public static JFrame login;
public static JLabel benName;
public static JLabel pass;
public static JTextField txtBenName;
public static JPasswordField txtPass;
public static JButton btAnmelden;
public static JButton btAbbrechen;
public static JPanel benNamePanel;
public static JPanel passPanel;
public static JPanel btLoginPanel;
public static JFrame start1;
public Forms(int x, int y, String title){
setSize(x, y);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((d.width - getSize().width) / 2, (d.height - getSize().height) / 2);
setTitle(title);
}
public static void main(String[] args) {
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
cn = DriverManager.getConnection("jdbc:sqlserver://localhost; databaseName = Lager; user = sa; password = xxx");
st = cn.createStatement();
System.out.println("Verbindung hergestellt.");
}catch(Exception ex){
System.out.println("Keine Verbindung hergestellt: " + ex);
ex.printStackTrace();
}
JFrame login = new Forms(319, 169, "Login");
login.getContentPane().setLayout(new GridLayout(3, 1));
benName = new JLabel("Benutzername");
benName.setPreferredSize(new java.awt.Dimension(90, 50));
pass = new JLabel("Passwort");
pass.setPreferredSize(new java.awt.Dimension(90, 25));
txtBenName = new JTextField();
txtBenName.setPreferredSize(new java.awt.Dimension(200, 25));
txtPass = new JPasswordField();
txtPass.setPreferredSize(new java.awt.Dimension(200, 25));
btAnmelden = new JButton("Anmelden");
btAbbrechen = new JButton("Abbrechen");
benNamePanel = new JPanel();
benNamePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
benNamePanel.add(benName);
benNamePanel.add(txtBenName);
passPanel = new JPanel();
passPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
passPanel.add(pass);
passPanel.add(txtPass);
btLoginPanel = new JPanel();
btLoginPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
login.add(benNamePanel);
login.add(passPanel);
login.add(btLoginPanel);
login.setVisible(true);
Login.login();
JFrame start1 = new Forms(290, 210, "Hauptmenü");
start1.setVisible(false);
}
@SuppressWarnings("serial")
public static void login() {
Action login = new AbstractAction("Anmelden"){
int count = 0; //after the third time wrong -> application will close
public void actionPerformed(ActionEvent event) {
Also ich bin heute so gut gelaunt, dass ich aufpassen muss, was ich schreibe
Danke! Und ja, du hast recht. Aber ich habe Hoffnung, dass mir im nächsten Semester ein Licht mit dem static und so auf geht. Ab nächste Woche sitze ich wieder in den Vorlesungen und wie ich gelesen habe, gibt es viiiieeel Java
Lass mich raten, du hast vorher mti Delphi gearbeitet? Forms, und nur statisches... is schon verdächtig...
Da deine Frage schon beantwortet war, kann ich nur nahelegen unbedingt mal durchzulesen wo der unterschide zwischen stati und non static sit, und was objecte bedeuten. (google "Java ist auch eine insel")zb
Ich weiß, dass ich noch viel lernen und lesen muss und das werde ich auch!!! Ich muss dieses Programm nur erst mal zum laufen bringen und das bis am besten vorgestern und dann hab ich hoffentlich die Zeit, das ordentlich nachzulesen und zu korrigieren.
Das ist das erste, für mich große, Projekt, dass ich mache. Ich habe so etwas noch nie gemacht. Es war meine Aufgabe im Praxissemester und auch wenn man vieles anders macht, als ich es nun mal programmiert habe, habe ich viel dabei gelernt.
Und ich bin wirklich dankbar, dass es dieses Forum gibt und nette Leute hier, die mir so viel geholfen haben!