Swing



  • Hallo,
    ich habe folgende Aufgabenstellung erhalten:

    Erstellen Sie einen Frame mit einem Label und darunter zwei nebeneinder angeordneten Buttons . Bei Vergrößerung des Fensters bleiben die Buttons in der Ausgangsgröße in der linken bzw. rechten unteren Ecke des Fensters (d.h. der Abstand zwischen den Buttons ist variabel), während der Label den gesamten restlichen Platz im Fenster ausfüllt. Der Text des Labels ist in der zur Verfügung stehenden Fläche zentriert (horizental wie vertikal).

    Welche(n) Layout-Manager könnte man hierfür einsetzen?

    Bei Klick auf den linken Button wird im Label der String ,,Hello World`` angezeigt, bei Klick auf den rechten Button wird das Programm beendet. Wenn der Benutzer das Fenster schließt, soll sich das Programm ebenfalls beenden

    Das Problem ist aber:

    Die Aufgaben auf diesem Aufgabenblatt sollen zunächst ohne Unterstützung durch einen GUI Designer (wie z.B. Together ) und nur durch Einsatz von Swing (d.h. nicht AWT) Kompenenten gelöst werden.

    Ich habe leider von Swing keine Ahnung und AWT ist nicht erlaubt.
    Kann mir jemand bei der Lösung helfen?



  • Andreas XXL schrieb:

    Ich habe leider von Swing keine Ahnung und AWT ist nicht erlaubt.
    Kann mir jemand bei der Lösung helfen?

    Klar, aber das Problem ist in erster Linie nicht Swing spezifisch. Auch bei AWT gibt es schon LayoutManager. Das solltest du dann ja auch kennen 😉

    Wo ist denn genau dein Problem? Fang doch erst mal an und melde dich wieder, wenn du was konkreteres hast.

    /Dirk



  • Hallo,

    also ich habe jetzt konkrete Fragen.

    1.Wie kann man bei JList herrausbekommen, ob etwas vom Anwender selektiert wurde?
    Vor allem muss ich die Nachricht gesendet bekommen ohne danach zu fragen.
    Ich will nicht alle X Sekunden nachfragen müssen.
    2.Wie kann ich ein Dialog Fenster schließen (über eigenen Button) ohne das gesamte programm zu beenden? Mir ist nur System.exit(1) eingefallen, aber das beendet ja alles!

    ]



  • du musst einen eventhandler registrieren

    dieses objekt (je nachdem) reagiert auf das jeweilige event

    ich empfehle die sun seite java.sun.com oder ein tutorial
    als kleinen anfang hier kopiert aus der java api doc (1.4) registrierung eines eventhandlers fuer mouse events
    der MouseAdapter ist eine dummy implementierung des MouseListener's
    sonst musst du alle funktionen ueberschreiben

    final JList list = new JList(dataModel);
     MouseListener mouseListener = new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {
             if (e.getClickCount() == 2) {
                 int index = list.locationToIndex(e.getPoint());
                 System.out.println("Double clicked on Item " + index);
              }
         }
     };
     list.addMouseListener(mouseListener);
    

    fuer weiter hilfe, such mal im internet und auf der sun seite
    da findest du alles weitere

    gomberl



  • das mit dem schliessen findest du auch in tutorials

    System.exit(0) ist wie gesagt der befehl zum beenden des ganzen programs
    normalerweise muesste ein dialog.hide() reichen - wenn ich mich recht erinnere

    muesste aber kurz nachschauen
    versuchs mal

    uebrigens:
    das meiste solltest du durch googeln oder schaun in die FAQ auch finden

    gomberl



  • Andreas XXL schrieb:

    2.Wie kann ich ein Dialog Fenster schließen (über eigenen Button) ohne das gesamte programm zu beenden? Mir ist nur System.exit(1) eingefallen, aber das beendet ja alles!

    In der Dialog-Klasse das hier einfügen müsste reichen (für das schließen des Fensters mittels des Windows-Buttons zum Schließen bzw. vergleichbarem in anderen BS):

    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    

Anmelden zum Antworten