Avatar billede langkiller Nybegynder
03. maj 2012 - 10:21 Der er 17 kommentarer og
1 løsning

login med GUI fejl

Har fået et par fejlmeddelelser til min kode efter at have forsøgt mig med noget GUI på et login system. Fejlen kommer af noget med min ActionListener på en knap.

Her er min kode:
http://pastebin.com/3GYFxt4G


Og fejlmeddelelserne:

loginLayout.java:10: error: loginLayout is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener
public class loginLayout implements ActionListener {
      ^
loginLayout.java:63: error: local variable typedCPR is accessed from within inner class; needs to be declared final
                        String cprTry = typedCPR.getText();
                                        ^
loginLayout.java:64: error: local variable typedPassword is accessed from within inner class; needs to be declared final
                        String passwordTry = typedPassword.getText();
                                            ^
loginLayout.java:66: error: local variable getData is accessed from within inner class; needs to be declared final
                        String cpr = getData.getLogin(cprTry, passwordTry);
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 12:17 #1
I linie 10 ska du vel blot fjerne " implements ActionListener "
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 12:21 #2
Og så skal du nok ændre linie 39

  JTextField typedPassword = new JTextField();

til

  typedPassword = new JTextField();

og fjerne "final" i linie 17.

Og tisvarende for de to andre. (Helt utestet)
Avatar billede langkiller Nybegynder
03. maj 2012 - 12:23 #3
Okay så får jeg
loginLayout.java:67: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
String cpr = getData.getLogin(cprTry, passwordTry);
Avatar billede langkiller Nybegynder
03. maj 2012 - 12:26 #4
og hvis jeg gør som du siger i #2 får jeg rigtig mange fejl:


loginLayout.java:37: error: cannot find symbol
                typedCPR = new JTextField("", 10);
                ^
  symbol:  variable typedCPR
  location: class loginLayout
loginLayout.java:38: error: cannot find symbol
                typedCPR.setPreferredSize(new Dimension(120, 20));
                ^
  symbol:  variable typedCPR
  location: class loginLayout
loginLayout.java:39: error: cannot find symbol
                typedPassword = new JTextField("", 10);
                ^
  symbol:  variable typedPassword
  location: class loginLayout
loginLayout.java:40: error: cannot find symbol
                typedPassword.setPreferredSize(new Dimension(120, 20));
                ^
  symbol:  variable typedPassword
  location: class loginLayout
loginLayout.java:43: error: cannot find symbol
                    textPanel.add(typedCPR);
                                  ^
  symbol:  variable typedCPR
  location: class loginLayout
loginLayout.java:45: error: cannot find symbol
                    textPanel.add(typedPassword);
                                  ^
  symbol:  variable typedPassword
  location: class loginLayout
loginLayout.java:64: error: cannot find symbol
                        String cprTry = typedCPR.getText();
                                        ^
  symbol: variable typedCPR
loginLayout.java:65: error: cannot find symbol
                        String passwordTry = typedPassword.getText();
                                            ^
  symbol: variable typedPassword
8 errors
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 12:30 #5
Din metode getLogin fra loginCheck klassen i loginCheck.java kaster en FileNotFoundException, som du skal håndtere. Hvad skal der ske, hvis det indtræffer?

Det burde ikke give de fejl ... må vi se koden nu?
Avatar billede langkiller Nybegynder
03. maj 2012 - 12:38 #6
Hvilken kode vil du se.. Har lagt den opdaterede version af ovenstående ind her :

http://pastebin.com/w3VJ5SwW


eller vil du se loginCheck.java?
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 12:45 #7
Du har nu ikke gjort som jeg skrev i #2. Prøv igen.
Avatar billede langkiller Nybegynder
03. maj 2012 - 13:14 #8
okay så prøver jeg igen :P

http://pastebin.com/kqwLuXPk

Har jeg ændret til det du mente nu?
.. uanset hvad virker koden stadig ikke :S
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 13:18 #9
Æh, nej. Prøv at læse det igen. Eller mig skære det ud i pap:

Linie 17 var

  final JTextField typedPassword;

og bu bliver bedt om:  og fjerne "final" i linie 17.

Så må resultatet blive

  JTextField typedPassword;

Du er i hvert fald ikke blevet bedt om at fjerne linie 17.
Avatar billede langkiller Nybegynder
03. maj 2012 - 13:30 #10
tak for det..


her er hvad jeg så får af fejl:

loginLayout2.java:22: error: cannot find symbol
        loginCheck getData = new loginCheck(); // Objekt getData metoder fra loginCheck.java
        ^
  symbol:  class loginCheck
  location: class loginLayout2
loginLayout2.java:22: error: cannot find symbol
        loginCheck getData = new loginCheck(); // Objekt getData metoder fra loginCheck.java
                                ^
  symbol:  class loginCheck
  location: class loginLayout2
loginLayout2.java:37: error: non-static variable typedCPR cannot be referenced from a static context
                typedCPR = new JTextField();
                ^
loginLayout2.java:38: error: non-static variable typedCPR cannot be referenced from a static context
                typedCPR.setPreferredSize(new Dimension(120, 20));
                ^
loginLayout2.java:39: error: non-static variable typedPassword cannot be referenced from a static context
                typedPassword = new JTextField();
                ^
loginLayout2.java:40: error: non-static variable typedPassword cannot be referenced from a static context
                typedPassword.setPreferredSize(new Dimension(120, 20));
                ^
loginLayout2.java:43: error: non-static variable typedCPR cannot be referenced from a static context
                    textPanel.add(typedCPR);
                                  ^
loginLayout2.java:45: error: non-static variable typedPassword cannot be referenced from a static context
                    textPanel.add(typedPassword);
                                  ^
loginLayout2.java:63: error: non-static variable typedCPR cannot be referenced from a static context
                        String cprTry = typedCPR.getText();
                                        ^
loginLayout2.java:64: error: non-static variable typedPassword cannot be referenced from a static context
                        String passwordTry = typedPassword.getText();
                                            ^
loginLayout2.java:66: error: local variable getData is accessed from within inner class; needs to be declared final
                        String cpr = getData.getLogin(cprTry, passwordTry);
                                    ^
11 errors
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 13:37 #11
Okay, du har det hele i en public static void main - det havde jeg ikke set. For så må du jo nok gøre det som:

  static JTextField typedPassword;

Man skal generelt holde fra static, med mindre det er nødvendigt.
Avatar billede langkiller Nybegynder
03. maj 2012 - 13:42 #12
lidt færre fejl nu, men stadig:

loginLayout2.java:22: error: cannot find symbol
        loginCheck getData = new loginCheck(); // Objekt getData metoder fra loginCheck.java
        ^
  symbol:  class loginCheck
  location: class loginLayout2
loginLayout2.java:22: error: cannot find symbol
        loginCheck getData = new loginCheck(); // Objekt getData metoder fra loginCheck.java
                                ^
  symbol:  class loginCheck
  location: class loginLayout2
loginLayout2.java:66: error: local variable getData is accessed from within inner class; needs to be declared final
                        String cpr = getData.getLogin(cprTry, passwordTry);
                                    ^
3 errors
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 13:56 #13
Det kunne du før, så du skal lige se om loginCheck.java ligger samme sted som din loginLayout.java.

Og så er konventionen at navne på klasser har stort begyndelsesbogstav - men det er ikke årsag til fejlbeskeden.
Avatar billede langkiller Nybegynder
03. maj 2012 - 13:59 #14
Har fået den til at compile nu:

http://pastebin.com/GH8vknta


Men har stadig et problem.. den køre bare derud af inde jeg har trykket på knappen. Så den laver en System.out.println() hvor den skriver Brugernavnet eksisterer ikke i databasen allerede når man kører programmet... kan man ikke lave en break på en eller anden måde og så få den til at tjekke hver gang man trykker?
hvis du forstår
Avatar billede erikjacobsen Ekspert
03. maj 2012 - 14:08 #15
Det er sådan set det metoden actionPerformed er beregnet til. Den bliver udløst når, du trykker på knappen (og knappen har tilknyttet den pågældende actionlistener), og det havde du jo vistnok rigtigt i første udgave.

Så der skal stå noget passende i den actionPerformed du har nu.

Men som du laver det nu, hvor der sker noget i en constructor, behøver du ikke længere at have dine Swing-dimser private.
Avatar billede langkiller Nybegynder
24. juni 2012 - 19:26 #16
hey, glemte helt denne her tråd. fik den aldrig lukket. Smid et svar hvis du vil have points, ellers lukker jeg den selv

tak for hjælpen
Avatar billede erikjacobsen Ekspert
24. juni 2012 - 19:31 #17
Ingen point til mig, tak.
Avatar billede langkiller Nybegynder
24. juni 2012 - 19:59 #18
ok bare iorden :) så lukker jeg den bare selv
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester