Chrischaaan: Panels und sowas

Hallo

ich hab grade versucht für meine passwortabfrage panels zu machen, damit das auch alles schön an seinem platz sitzt.
so.

jetz hab ich ne weile probiert und da ging das immer nich.
dann hab ich kurzerhand aus meinem schlauen java buch den code abgeschrieben der dort drin war.
denn der muß ja stimmen.

mein ergebniss ist das:

public void init()
{
setLayout(new BorderLayout());
Panel np = new Panel(250, 50);
add("Passwort", np);
Panel sp = new Panel(100, 100);
add("Button", sp);
Panel ep = new Panel(100, 100);
add("Eingabefelder", ep);
Panel wp = new Panel(100, 100);
add("Beschriftung", wp);

np.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 5));
np.add(lbl_passwort);

sp.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 5));
sp.add(cmd_Ok);
sp.add(lbl_info);

ep.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
ep.add(txt_nutzername);
ep.add(txt_nutzerpw);

wp.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
wp.add(lbl_nutzername);
wp.add(lbl_nutzerpw);
}

nu bringt der mir aber bei .setLayout die Meldung das das keine Methode in wp(z.b.) ist.
toll, das weiß ich auch.sonst hätte j++ das ja als methode angezeigt.aber im buch gehts.
obwohl die auch java2 schreiben und so.
und bei .add genau das gleiche.

was muß ich jetz alternativ angeben damit das funktioniert?

bye,christian.

  1. Hallo,

    nu bringt der mir aber bei .setLayout die Meldung das das keine Methode in wp(z.b.) ist.
    toll, das weiß ich auch.sonst hätte j++ das ja als methode angezeigt.aber im buch gehts.

    seltsam, setLayout ist eine Methode von Container, und da Panel von Container erbt, also ein Container ist müsste es die Methode geben.

    und bei .add genau das gleiche.

    Auch dass müsste gehen, bei Deinem Code fällt mir da nur auf, was sind das für Objekte die Du den Panels hinzufügst. Wo hast Du die erzeugt ? Vielleicht ist das dass Problem, der Rest vom Code müsste eigentlich stimmen, zumindest seh ich keinen Fehler.

    Gruss

    Marko

    1. hi

      hier nochmal der ganze code.
      vielleicht hilfts weiter.
      (wer weiß was ich da wieder vergessen hab...)

      import java.applet.*;
      import java.awt.*;
      import java.awt.event.*;

      public class Applet1 extends Applet
      {
       Label lbl_info = new Label("                                                  ");
       Label lbl_passwort = new Label("Passworteingabe");
       Label lbl_nutzername = new Label("Name :");
       Label lbl_nutzerpw = new Label("Passwort :");
       TextField txt_nutzername = new TextField();
       TextField txt_nutzerpw = new TextField();
       Button cmd_Ok = new Button("Ok");
       ButtonListener kontrolle = new ButtonListener();

      class Panel
        {
         Dimension myDimension = new Dimension(15, 15);

      Panel(int h, int w)
         {
          myDimension.height = h;
          myDimension.width = w;
         }
        }

      class ButtonListener implements ActionListener
        {
        public void actionPerformed(ActionEvent e)
        {
         String passwort = txt_nutzerpw.getText();
         String loginname = txt_nutzername.getText();

      if("MAK".equals(loginname))
          {
           if("geheim".equals(passwort))
            {
             lbl_info.setText("Richtig");
            }
           else
            {
             lbl_info.setText("Loginname oder Passwort falsch!");
            }
          }
         else
          {
           lbl_info.setText("Loginname oder Passwort falsch!");
          }
        }
       }

      public void init()
       {
        setLayout(new BorderLayout());
        Panel np = new Panel(250, 50);
        add("Passwort", np);
        Panel sp = new Panel(100, 100);
        add("Button", sp);
        Panel ep = new Panel(100, 100);
        add("Eingabefelder", ep);
        Panel wp = new Panel(100, 100);
        add("Beschriftung", wp);

      np.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 5));
        np.add(lbl_passwort);

      sp.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 5));
        sp.add(cmd_Ok);
        sp.add(lbl_info);

      ep.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
        ep.add(txt_nutzername);
        ep.add(txt_nutzerpw);

      wp.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
        wp.add(lbl_nutzername);
        wp.add(lbl_nutzerpw);
       }
      }

      danke schonmal...

      bye,christian.

      1. Hi Christian,

        ja hier haben wir es:

        class Panel
          {
           Dimension myDimension = new Dimension(15, 15);

        Panel(int h, int w)
           {
            myDimension.height = h;
            myDimension.width = w;
           }
          }

        Du definierst Dir eine eigene Klasse Panel, kann man machen, aber ich würde die Klasse z.B. MyPanel nennen, und ganz wichtig, sie muss natürlich alle Eigenschaften und Methoden eines in Java definierten Panels haben (Vererbung):

        class MyPanel extends Panel
        {
        ...
        }

        Die wichtigste URL zum Java programmieren  ist übrigens die API Doku:

        http://java.sun.com/j2se/1.4.1/docs/api/

        Da kannst Du immer alles über die ganzen Klassen im Sprachstandard nachschlagen. Alles über Panel erfährst z.B. hier:

        http://java.sun.com/j2se/1.4.1/docs/api/java/awt/Panel.html

        Der Baum ganz oben gibt die Vererbungshierarchie an, MyPanel kommt jetzt eine weitere Stufe unter Panel ist also ein Panel, ein Container, eine Componente und ein Object mit allen Fähigkeiten und Methoden und Eigenschaften dieser Klassen.

        Gruss

        Marko

        1. hi marko

          vielen dank für deine hilfe.
          ich hab das jetzt alles in mypanel umbenannt und jetzt kommt auch keine fehlermeldung mehr.

          bloß jetz hab ich folgendes problem:
          es werden keine objekte mehr angezeigt.
          nur noch alles grau :-(((

          hab ich da jetz bei der class Panel(inzwischen MyPanel) noch irgendwas entscheidendes nicht drin?
          class MyPanel extends Panel{}
          müßte doch reichen oder?

          bye,christian.

          1. Hi Christian,

            vielleicht wäre es am besten, Du nimmst einfach das Panel aus Java. Mit der Vererbung soll wohl irgendwie das Layout kontrolliert werden, das ist aber ziemlich gefährlich wenn man noch nbicht richtig versteht, wie Java die Oberflächen aufbaut und auf den Bildschirm malt. Lies Dir am besten in Deinem schlauen Buch das Kapitel über LayoutManager durch, und verwende einen möglichst einfachen (z.B. BorderLayout) zum Aufbau der Oberfläche und las das Gefummel mit Dimensions weg.
            Am Anfang verstehst Du wahrscheinlich erstmal nicht was das mit den Layoutmanagern überhaut soll, später eventuell auch nicht (halte diese Erfindung auch nicht gerade für den Glanzpunkt an Java), aber Du hast wahrscheinlich erstmal am wenigsten Probleme, wen Du diesen Weg wählst.
            Also lass die Klasse MyPanel komplett weg, nimm nur Panel. Die Größen werden durch die Layoutmanager gemacht.

            Gruss

            Marko

            1. Hi

              ein schlaues buch ist nicht schlau genug um mir sagen zu können was das mit dem LayoutManager auf sich hat.
              (Wohl doch das falsche Buch gekauft...*grummel*)

              mhhhhh, was nun?

              Wie verwende ich nun den LayoutManager?

              bye,Christian.

              1. Hi,

                Wie verwende ich nun den LayoutManager?

                hm, also eigentlich müsste in dem Buch was drüber stehen, es geht einfach um den Aufbau grafischer Oberflächen. Wenn es allerdings gleich anfängt da etwas von grafischen Konponenten abzuleiten, ohne zu erklären wie die LAyoutmanager funktionieren ist es wirklich Mist.
                Das alles erklären kann ich Dir hier wirklich nicht, aber falls Du fit genug bist in Englisch, die Java Tutorials von Sun sind eigentlich gut und auch für normale Menschen lesbar.

                Das AWT Tutorial:
                http://developer.java.sun.com/developer/onlineTraining/awt/contents.html

                Ansonsten bleibt Dir wohl nur übrig ein besseres Buch zu besorgen, aber muss man nicht unbedingt kaufen, gibt es in öffentlichen Bibliotheken (z.B. Unibibliotheken) wie Sand am Meer.

                Gruss

                Marko

                1. Noch was speziell zu den Layoutmanagern:

                  http://developer.java.sun.com/developer/onlineTraining/GUI/AWTLayoutMgr/shortcourse.html

                  1. hi

                    das hilft mir irgendwie nicht so ganz weiter.
                    obwohl das bild unten meiner vorstellung schon recht nahe kommt.
                    aber das fenster so klein schieben bis sich die objekte von alleine ordnen is ja nicht mein ziel.
                    ich hab ja ein großes fenster,weil in dem appletfenster nach der passworteingabe ja noch der geschützte text drin stehen soll.
                    und dazu muß das fenster groß sein.*verzweifel*

                    mhhhhh,sowas wie tabellen gibts in java nich oder?
                    also ich hab jedenfalls in meim schlauen buch noch nichts davon gelesen,aber da steht ja nich alles drin...

                    bye,christian.

                    1. Hi Christian,

                      aber das fenster so klein schieben bis sich die objekte von alleine ordnen is ja nicht mein ziel.
                      ich hab ja ein großes fenster,weil in dem appletfenster nach der passworteingabe ja noch der geschützte text drin stehen soll.

                      Kannst Du alles mit den Layoutmanagern machen, lesen, experimentieren, überlegen...Du kannst allerdings auch den Layoutmanager auf "null" stellen und größe und Position per Hand definieren. Weiss aber auch nicht mehr genau wie das geht.

                      und dazu muß das fenster groß sein.*verzweifel*

                      Anhaltspunkt: Du könntest z.B. den Text von Anfang an drinhaben, nur auf unsichtbar stellen. Kein Grund zum verzweifeln, neue Programmiersprachen erfordern etwas Lernen bis man die Konzepte verstanden hat :-)

                      mhhhhh,sowas wie tabellen gibts in java nich oder?

                      Ne, das ist kein HTML.

                      also ich hab jedenfalls in meim schlauen buch noch nichts davon gelesen,aber da steht ja nich alles drin...

                      Arbeite Dich in die Programmierung von grafischen Oberflächen ein, macht ein bisschen Arbeit (+ Spaß), aber wenn Du noch öfters Java verwenden willst lohnt es sich.

                      Gruss

                      Marko

                      1. hi

                        bis jetz hab ich die applikations immer mit dem visual j++ gemacht, da hatte ich die sorge der anordnung nicht.
                        und von dort die anweisungen vfür die positionen rausnehmen geht ja auch wieder nicht weil microsoft eigene klassen verwendet *arghhhhhhh*.

                        neuester fehler ist ja, wunderlicherweise: ich mach ne textarea und geb als größe 5 zeilen und 15 zeichen an.dann starte ich das,geht alles wunderbar.
                        dann mach ich 8 zeilen und 30 zeichen draus und das geht nicht mehr.
                        *grins*
                        na mal sehn was sich da heute abend noch machen lässt...

                        danke für deine hilfe.
                        bye, christian.

  2. Hi,

    toll, das weiß ich auch.sonst hätte j++ das ja als methode angezeigt.aber im buch gehts.

    j++ ist das, was Microsoft aus Java gemacht hat...
    Das hat mit Java in etwa so viel zu tun wie das, was bei Word - Save as HTML rauskommt, mit HTML zu tun hat...

    Verzichte darauf.
    Benutze richtiges Java (hol Dir z.B. Forte von Sun).

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/