-
Hallo.
Ich hab ein Problem mit einer Schulaufgabe:
Ein Textfeld in dem ein Pin reinkommt, und ein button zum bestätigen.
Wenn es der richtige Pin ist, soll sich dieses "Formular" erweitern, außerdem soll
der Pin nicht sichtbar sein:***.
Ich würde gern wissen, wie man den Pin so einstellt
und wie ich dieses Formular erweiter! ! !
Hilfe
! ! !
Was ich bisher hab in meinem Fenster wäre das Dokument im Anhang.Geändert von Y-Style (28.04.11 um 21:58 Uhr)
-
28.04.11 21:25 #2
- Registriert seit
- Feb 2009
- Beiträge
- 193
Also für das Passwortfeld gibt es extra die Klasse JPasswordField. Die macht genau das was du willst.
Was das mit dem Formular erweitern betrifft. Naja, beim klicken aufd en Button musst du halt nur im ActionListener überprüfen ob die Pin stimmt und dann ggf. Die weiteren Componenten zum Frame hinzufügen.
Quelltext poste ich bewusst nicht, da es ja schließlich deine Aufgabe ist.
-
-
28.04.11 23:22 #4
- Registriert seit
- Feb 2009
- Beiträge
- 193
Ganz einfach. Du machst dir zu deinem Bestätigen-Button einen ActionListener. In dem liest du den Inhalt des JPassworFields aus. Den vergleichst du dann mit der Pin. Wo du die Pin gespeichert hast ergibt sich mir aus dem von dir im Anhang geposteten Quellcode allerdings noch nicht.
Wie man einen Listener erstellt weißt du ja. Du hast es zumindest in deinem Code oben verwendet.
-
ok des hab ich verstanden krieg des trotzdem nicht hin -.-
vielleicht hilft es wenn ich alles zeig was ich hab bis jetzt:
die normale Klasse für den pin usw.:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
package paket_Kopierer; import javax.swing.JOptionPane; public class Kopierkarte { private String pin; private int stand; public Kopierkarte() { pin="123"; stand=100; } public void setPin(String pPin) { pin=pPin; } public String getPin() { return pin; } public void setStand(int pStand) { stand=pStand; } public int getStand() { return stand; } public void bestätigen(String pfPinNummer) { pfPinNummer=pin; } public void mindern(int pMinderung) { if (stand-pMinderung >= 0) { stand=stand-pMinderung; } else { JOptionPane.showMessageDialog(null,"Nicht genügend Kopien vorhanden******"); } } }
die Startklasse zur Erzeugung des Fensters:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
package paket_Kopierer; public class Startklasse { public static void main(String[] args) { Fenster fenster1; fenster1=new Fenster(); fenster1.setVisible(true); } }
mein Fenster:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
package paket_Kopierer; import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JFrame; import javax.swing.JTextPane; import javax.swing.JTextField; import javax.swing.JTable; import javax.swing.JList; import java.awt.Rectangle; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JTextArea; import java.text.*; import javax.swing.JCheckBox; import javax.swing.JPasswordField; import java.awt.Dimension; import javax.swing.JInternalFrame; import javax.swing.JSplitPane; import javax.swing.JWindow; public class Fenster extends JFrame { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JList jList = null; private JLabel lbPinNummer = null; private JLabel lbBestätigen = null; private JTextField tfKontostand = null; private JButton btEnde = null; private JButton btKopieren = null; private JLabel lbKontostand = null; private JTextField tfKopien = null; private Kopierkarte karte1; private JButton btBestätigen = null; private JPasswordField pfPinNummer = null; private JLabel lbAnzahlKopien = null; private JPasswordField pfPinNummer1 = null; public Fenster() { super(); initialize(); karte1=new Kopierkarte(); } private void initialize() { this.setSize(400, 300); this.setContentPane(getJContentPane()); this.setTitle("Kopierer ohne DB"); } private JPanel getJContentPane() { if (jContentPane == null) { lbAnzahlKopien = new JLabel(); lbAnzahlKopien.setBounds(new Rectangle(20, 140, 150, 25)); lbAnzahlKopien.setText("Anzahl Kopien:"); lbKontostand = new JLabel(); lbKontostand.setBounds(new Rectangle(20, 100, 150, 25)); lbKontostand.setText("aktueller Kontostand:"); lbBestätigen = new JLabel(); lbBestätigen.setBounds(new Rectangle(20, 60, 150, 25)); lbBestätigen.setText("Pin-Nummer bestätigen:"); lbPinNummer = new JLabel(); lbPinNummer.setBounds(new Rectangle(20, 20, 100, 25)); lbPinNummer.setText("Pin-Nummer:"); jContentPane = new JPanel(); jContentPane.setLayout(null); jContentPane.add(getJList(), null); jContentPane.add(lbPinNummer, null); jContentPane.add(lbBestätigen, null); jContentPane.add(getTfKontostand(), null); jContentPane.add(getBtEnde(), null); jContentPane.add(getBtKopieren(), null); jContentPane.add(lbKontostand, null); jContentPane.add(getTfKopien(), null); jContentPane.add(getBtBestätigen(), null); jContentPane.add(lbAnzahlKopien, null); jContentPane.add(getPfPinNummer1(), null); } return jContentPane; } private JList getJList() { if (jList == null) { jList = new JList(); jList.setBounds(new Rectangle(0, 0, 0, 373)); } return jList; } private JTextField getTfKontostand() { if (tfKontostand == null) { tfKontostand = new JTextField(); tfKontostand.setBounds(new Rectangle(190, 100, 100, 25)); tfKontostand.setEditable(false); tfKontostand.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { } }); } return tfKontostand; } private JButton getBtEnde() { if (btEnde == null) { btEnde = new JButton(); btEnde.setBounds(new Rectangle(190, 180, 100, 25)); btEnde.setText("Ende"); btEnde.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.exit(0); } }); btEnde.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.exit(0); } }); } return btEnde; } private JButton getBtKopieren() { if (btKopieren == null) { btKopieren = new JButton(); btKopieren.setBounds(new Rectangle(20, 180, 100, 25)); btKopieren.setText("Kopieren"); btKopieren.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { karte1.mindern(Integer.parseInt(tfKopien.getText())); } }); } return btKopieren; } private JTextField getTfKopien() { if (tfKopien == null) { tfKopien = new JTextField(); tfKopien.setBounds(new Rectangle(190, 140, 100, 25)); } return tfKopien; } /** * This method initializes btBestätigen * * @return javax.swing.JButton */ private JButton getBtBestätigen() { if (btBestätigen == null ) { btBestätigen = new JButton(); btBestätigen.setBounds(new Rectangle(190, 60, 100, 25)); btBestätigen.setText("Bestätigen"); btBestätigen.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { pfPinNummer.getText(); } }); } return btBestätigen; } /** * This method initializes pfPinNummer1 * * @return javax.swing.JPasswordField */ private JPasswordField getPfPinNummer1() { if (pfPinNummer1 == null) { pfPinNummer1 = new JPasswordField(); pfPinNummer1.setBounds(new Rectangle(188, 16, 101, 32)); } return pfPinNummer1; } /** * This method initializes pfPinNummer * */ }
Die Aufgabe:
Erstellen sie ein OO-Projekt ,,Projekt_Kopierer", mit dem das Kopieren mit einer Kopier-
karte "simuliert" werden soll.
Nach Eingabe der korrekten (nicht sichtbaren) Pin-Nummer(123) erweitert sich das Formular. Wenn der Falsche Pin eingegeben wurde soll eine Fehlermeldung in einem Fenster ausgegeben werden.
Der Benutzer erhält eine Information über den aktuellen Kontostand und kann nun die Anzahl der gewünschten Kopien eintragenn.
Nach dem Klick auf Kopieren wird der Kontostand aktualisiert.
Es muss verhindert werden, dass die gewünschte Kopienanzahl den aktuellen Kontostand übersteigt.
Ich hoffe, dass des jetzt verständlicher ist
.
-
Wieso hast du 2 Passwort Felder?
Ansonsten wenn du das richtige nutzt (du fuegst ja nur pfPinNummer1 zum Panel hinzu) hats du doch schon einen ActionListenerCode java:1 2
private JPasswordField pfPinNummer = null; private JPasswordField pfPinNummer1 = null;
Dieser holt doch den Text (das Passwort) aus dem Textfeld. Speicher diesen in eine Variable. So passiert ja nichts damitCode java:1 2 3 4
public void actionPerformed(java.awt.event.ActionEvent e) { pfPinNummer.getText(); }

Dort in der actionperformed kannst du dann auch direkt von deiner Karte den richtigen Pin fragen mit der getMethode
Dann die beiden Strings vergleichenCode java:1
karte1.get...Geändert von MiMi (29.04.11 um 09:04 Uhr)
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
29.04.11 09:54 #7SE Tutorials.de Gastzugang
Also erstmal : pfPinNummer wird nirgends initialisiert ... würde also zu ner NPE führen.
Zweitens : Umlaute sind in JAVA zwar kein Problem dank der UNICODE-codierung ... sind aber nicht wirklich schön und beim verteilen des Source auf ein System mit anderem Charset werden deine Source-Files falsch dargestellt : daher Sonderzeichen möglichst vermeiden.
Drittens : JPasswordField.getText() ist deprecated , stattdessen getPassword() verwenden.
Viertens : du musst dann das return von getPassword auch irgendwo hinspeichern und nicht einfach nur die Methode aufrufen > das bewirkt nichts.
Fünftens : das Erweitern einfach realisieren in dem man das Formular vorbereitet und bei richtiger PIN als JPanel added und dann validate() und update() aufruft.
-
wie soll ich des dann in einer variablen speichern?
hört sich gut an leider versteh ich nicht alles richtig.
- was ist eine NPE? und wie soll ich die dann initialisieren?
- was meinst du bei drittens? -> erklärung
- wie soll ich das machen bei viertens?
- bei fünftens wäre ein beispiel in ordnung, da ich das nicht richtig verstehGeändert von Y-Style (29.04.11 um 12:59 Uhr)
-
Zu 1. NPE = Nullpointer exception. Wie ich schon sagte, du hast 2 Passwortfelder, das was du nutzen willst wird aber nicht initialisiert.
Zu 3. Man soll getPassword anstatt getText verwenden.
Zu 4. ist das was ich geschrieben hab.
Du machst ein getText (bzw dann getPassword) speicherst das was du bekommst aber nirgens in ne Variable. Abspeichern und den Inhalt des Strings dann (siehe meinen Text oben) vergleichen
Versuch erstmal das vergleichen der Strings hinzubekommen bzw das Auslesen vom Inhalt aus einem Textfeld, bevor du ein Fenster erweitern willst OoWaere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
ok ich jetzt ma alles gemacht das ich verstanden hab:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
package paket_Kopierer; import java.awt.BorderLayout; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JFrame; import javax.swing.JTextPane; import javax.swing.JTextField; import javax.swing.JTable; import javax.swing.JList; import java.awt.Rectangle; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JTextArea; import java.text.*; import javax.swing.JCheckBox; import javax.swing.JPasswordField; import java.awt.Dimension; import javax.swing.JInternalFrame; import javax.swing.JSplitPane; import javax.swing.JWindow; public class Fenster extends JFrame { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JList jList = null; private JLabel lbPinNummer = null; private JLabel lbBestätigen = null; private JTextField tfKontostand = null; private JButton btEnde = null; private JButton btKopieren = null; private JLabel lbKontostand = null; private JTextField tfKopien = null; private Kopierkarte karte1; private JButton btBestätigen = null; private JPasswordField pfPinNummer1 = null; private JLabel lbAnzahlKopien = null; public Fenster() { super(); initialize(); karte1=new Kopierkarte(); } private void initialize() { this.setSize(400, 300); this.setContentPane(getJContentPane()); this.setTitle("Kopierer ohne DB"); } private JPanel getJContentPane() { if (jContentPane == null) { lbAnzahlKopien = new JLabel(); lbAnzahlKopien.setBounds(new Rectangle(20, 140, 150, 25)); lbAnzahlKopien.setText("Anzahl Kopien:"); lbKontostand = new JLabel(); lbKontostand.setBounds(new Rectangle(20, 100, 150, 25)); lbKontostand.setText("aktueller Kontostand:"); lbBestätigen = new JLabel(); lbBestätigen.setBounds(new Rectangle(20, 60, 150, 25)); lbBestätigen.setText("Pin-Nummer bestätigen:"); lbPinNummer = new JLabel(); lbPinNummer.setBounds(new Rectangle(20, 20, 100, 25)); lbPinNummer.setText("Pin-Nummer:"); jContentPane = new JPanel(); jContentPane.setLayout(null); jContentPane.add(getJList(), null); jContentPane.add(lbPinNummer, null); jContentPane.add(lbBestätigen, null); jContentPane.add(getTfKontostand(), null); jContentPane.add(getBtEnde(), null); jContentPane.add(getBtKopieren(), null); jContentPane.add(lbKontostand, null); jContentPane.add(getTfKopien(), null); jContentPane.add(getBtBestätigen(), null); jContentPane.add(lbAnzahlKopien, null); jContentPane.add(getPfPinNummer1(), null); } return jContentPane; } private JList getJList() { if (jList == null) { jList = new JList(); jList.setBounds(new Rectangle(0, 0, 0, 373)); } return jList; } private JTextField getTfKontostand() { if (tfKontostand == null) { tfKontostand = new JTextField(); tfKontostand.setBounds(new Rectangle(190, 100, 100, 25)); tfKontostand.setEditable(false); tfKontostand.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { tfKontostand.equals(karte1.getStand()); } }); } return tfKontostand; } private JButton getBtEnde() { if (btEnde == null) { btEnde = new JButton(); btEnde.setBounds(new Rectangle(190, 180, 100, 25)); btEnde.setText("Ende"); btEnde.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.exit(0); } }); } return btEnde; } private JButton getBtKopieren() { if (btKopieren == null) { btKopieren = new JButton(); btKopieren.setBounds(new Rectangle(20, 180, 100, 25)); btKopieren.setText("Kopieren"); btKopieren.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { karte1.mindern(Integer.parseInt(tfKopien.getText())); } }); } return btKopieren; } private JTextField getTfKopien() { if (tfKopien == null) { tfKopien = new JTextField(); tfKopien.setBounds(new Rectangle(190, 140, 100, 25)); } return tfKopien; } private JButton getBtBestätigen() { if (btBestätigen == null ) { btBestätigen = new JButton(); btBestätigen.setBounds(new Rectangle(190, 60, 100, 25)); btBestätigen.setText("Bestätigen"); btBestätigen.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { getPfPinNummer1(); karte1.getPin(); if (pfPinNummer1.equals(karte1.getPin())) { getTfKontostand(); } else { JOptionPane.showMessageDialog(null,"Falsche Pin-Nummer******"); } } }); } return btBestätigen; } private JPasswordField getPfPinNummer1() { if (pfPinNummer1 == null) { pfPinNummer1 = new JPasswordField(); pfPinNummer1.setBounds(new Rectangle(188, 16, 101, 32)); } return pfPinNummer1; } }
den vergleich hab ich jetzt halt mit equals gemacht,
aber bei mir erscheinen die buttons nicht mehr und ich krieg bei der ausführung, bei der richtigen pin,
meine fehlermeldung falsche pin, was hab ich falsch?
wie soll ich des dann bei viertens speicher?Geändert von Y-Style (29.04.11 um 13:39 Uhr)
-
Oo
Was machst du da?Code java:1 2 3 4 5 6 7 8 9 10
getPfPinNummer1(); karte1.getPin(); if (pfPinNummer1.equals(karte1.getPin())) { getTfKontostand(); } else { JOptionPane.showMessageDialog(null,"Falsche Pin-Nummer******"); }
pfPinNummer1 ist ein Textfeld, das vergleichst du mit einem STring. Du musst den Inhalt des Textfeldes mit dem anderen String (Pin) vergleichen. Das ein Textfeld != "123" ist, ist ja wohl klar
Hat nirgens eine Auswirkung drauf!Code java:1 2
getPfPinNummer1(); karte1.getPin();
Speicher beides (also den Inhalt des Textfeldes und den Wert aus deiner karte.getPin()) in eine Variable und vergleiche diese beiden Variablen.Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
ok des muss jetzt wahrscheinlich echt dumm rüberkommen,
aber wie soll ich des in einer variablen speichern?
-
hier speicherst du das Objekt JButton in der variablen btKopierenCode java:
1
btKopieren = new JButton();
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
29.04.11 15:30 #14SE Tutorials.de Gastzugang
Mal ne ganz dumme Gegenfrage : hast du überhaupt irgendwie Erfahrung im umgang mit Java oder generell Programmieren ?
Google dir mal das OpenBook JavaInsel. Das dürfte dir bei deiner Aufgabe fast bis zum Erfolg weiterhelfen da dir ganz offensichtlich die einfachsten Grundlagen schlicht FEHLEN.
-
Ähnliche Themen
-
Kurven sichtbar machen
Von christin1982 im Forum PhotoshopAntworten: 5Letzter Beitrag: 28.04.10, 13:33 -
HDI-Map nur in Spiegelung sichtbar machen?
Von niedi5 im Forum 3D Studio MaxAntworten: 2Letzter Beitrag: 29.04.07, 23:08 -
Kanten sichtbar machen
Von L3echa im Forum Cinema 4DAntworten: 3Letzter Beitrag: 16.08.05, 18:13 -
DIV sichtbar machen
Von Flame im Forum CSSAntworten: 1Letzter Beitrag: 07.02.04, 22:26 -
kennwort sichtbar machen
Von ziriander im Forum Microsoft WindowsAntworten: 3Letzter Beitrag: 11.08.03, 20:50



8Danke

Zitieren
Login





