Toon posts:

[java] Events in Swing

Pagina: 1
Acties:

Verwijderd

Topicstarter
Normaal gesproken programmeerde ik GUI's altijd met het java.awt package. Daarin kon je events afhandelen door simpelweg een methode met de naam handleEvent(Event evt) te plaatsen. Maar nu wilde ik het eens proberen in Swing. Maar als ik daar op een JButton druk, doet mijn handleEvent methode helemaal nix. Hoe zit de Event-structuur bij Swing in elkaar ? Ik heb gezocht op google en ik heb mijn vraag ook al gepost bij het javahova forum , maar ik heb nog nix gevonden. Wie maakt mijn dag weer goed ?? :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Net zoals in AWT moet je tegenwoordig voor nette-event afhandeling gebruik maken van Listeners. handleEvent(..) is echt behoorlijk not-done. Op een button kan je bijvoorbeeld een ActionListener aanmelden. De methode actionPerformed wordt aangeroepen als er op de knop wordt gedrukt.

Kijk eens naar java.awt.event.* of blader eens door de Java Tutorial..

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

http://java.sun.com/docs/books/tutorial/uiswing/index.html

en daar het onderdeel:
http://java.sun.com/docs/books/tutorial/uiswing/overview/event.html

Duidelijker zou ik het niet uit kunnen leggen

Groeten,

Tim

Verwijderd

Topicstarter
OK, bedankt mbravenboer. Ik zag op je site (www.pandoramix.org) en op de JavaHova site (www.javahova.net) dat jij al meer met swing hebt gewerkt :) alleen jammer dat beide sites nog niet helemaal in de lucht zijn :(

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
MisterJava: Ik zag op je site dat jij al meer met swing hebt gewerkt :)
Ach, ik pruts af en toe wat :o
alleen jammer dat beide sites nog niet helemaal in de lucht zijn :(
De libraries zijn nog niet stabiel genoeg naar mijn zin en ik heb geen tijd om documentatie te schrijven. Tot die tijd ben ik de enige die geniet van m'n libs ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
OK :) Maar weet jij toevallig ook hoe je kunt kijken wat het Target is van een ActionEvent ?? En is een ActionEvent te converteren naar een java.awt.Event ??

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
MisterJava: OK :) Maar weet jij toevallig ook hoe je kunt kijken wat het Target is van een ActionEvent ?? En is een ActionEvent te converteren naar een java.awt.Event ??
Misschien een goed idee om de API docs eens te bekijken?
class java.awt.Event: The Event class is obsolete and is available only for backwards compatilibility. It has been replaced by the AWTEvent class and its subclasses
java.awt.event.ActionEvent extends java.awt.AWTEvent
java.awt.AWTEvent extends java.util.EventObject
EventObject heeft een methode getSource().

Overigens is het meestal mooier om die niet te gebruiken, maar om een aparte ActionListener te gebruiken voor je buttons. Gevalsonderscheid in een listener (controller) vind ik erg lelijk.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
OK bedankt :) Programmeurs zijn meestal lui, ik ben er ook zo een *D Maar iig bedankt. Ik had dat zelf ook wel kunnen zoeken in de API Docs, maar ik zou niet weten waar die bij mijn J2SE zitten. (ik nl. heel lang geprogrammeerd met JDK1.1 , vandaar ook die vraag over die events)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Docs zitten niet standaard bij de SDK. Anders is hij namelijk nog twee keer zo groot :) . Ze staan wel online en je kan zo ook downloaden:

Downloaden: http://java.sun.com/j2se/1.4/
Online: http://java.sun.com/j2se/1.4/docs/api

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
OK. :) Dan ga ik weer lekker verder JAVA-en.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik zie trouwens op javahova dat Alarmnummer nog even op Actions was ingegaan. Je bent idd pas echt cool als je die gebruikt, dus kijk daar ff goed naar ;) .

Actions hebben behoorlijk wat voordelen boven gewone ActionListeners. Ik gebruik ze zelf werkelijk voor alles, omdat ik altijd werk in een volledig scheiding van GUI en Controller. Je kunt dan met behulp van actions heel makkelijk knoppen disablen in de GUI. Actions volgen een beetje het MVC model:
Action - Model,
actionPerformed implementatie - Controller (doe ik nooit in de action zelf)
Button/MenuItem/watdanook - View.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
En waar kan ik die pagina op javahova vinden ??

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 16-05 07:44
hier :

http://www.wasigh.com/javahova/forum/viewtopic.php?fid=1&tid=46

't is gewoon een reactie op je eigen topic :)

Verwijderd

Topicstarter
FF nog snel een heel kort vraagje (ik heb geen zin om daar een heel topic voor te openen) hoe voeg ik een item toe aan een JList ?? En hoe verander ik dat afschuwelijke font ?? Ach, ik JDK1.1 was alles veel makkelijker :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
MisterJava: hoe voeg ik een item toe aan een JList
Read The Fucking API Doc :) .

Het kan mooi en minder mooi: direct via de JList, of via het model eronder.
En hoe verander ik dat afschuwelijke font ?? Ach, ik JDK1.1 was alles veel makkelijker :)
Read The Fucking API Doc :)

javax.swing.UIManager of vraag mij lief om het PandoramixMetalTheme ;)

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Ok dan, ik vraag jou dan maar es om dat PandoramixMetalTheme geval.

:) :) :) :) :) :) :) :D :D :D :D :D (zo lief genoeg ??)

Verwijderd

Topicstarter
PandoramixMetalTheme
zit er bij de Java SDK niet al een voorbeeld met de naam MetalWorks en heeft dat niet ook iets met Skinnetjes en Themes te maken ??

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Vooruit dan maar ;) .

Dit theme kan je instellen via MetalLookAndFeel.setCurrentTheme(...). Het gebruik een font die ik mooi vind en goede Unicode ondersteunig heeft (wat helaas bij het standaard font niet zo is |:( . Ik had super en subscripts nodig namelijk).

Uiteraard kan je het font zelf veranderen of bepaalde componenten uitzonderen.
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
package org.pandoramix.gui;

import java.awt.Font;
import java.awt.Insets;
import javax.swing.plaf.FontUIResource;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.UIManager;

public class PandoramixMetalTheme extends DefaultMetalTheme
{
    private FontUIResource _controlFont;
    private FontUIResource _systemFont;
    private FontUIResource _userFont;
    private FontUIResource _smallFont;

    public String getName()
    {
        return "Pandoramix Elegance";
    }

    public PandoramixMetalTheme()
    {
        super();
        UIManager.put("TextField.margin", new Insets(2,2,2,2));
        Font font        = new Font("Lucida Sans Regular", Font.PLAIN, 12);

        _controlFont    = new FontUIResource(font);
        _systemFont     = new FontUIResource(font);
        _userFont       = new FontUIResource(font);
        _smallFont      = new FontUIResource(font);
    }

    public FontUIResource getControlTextFont()
    { 
        return _controlFont;
    }

    public FontUIResource getSystemTextFont()
    { 
        return _systemFont;
    }

    public FontUIResource getUserTextFont()
    { 
        return _userFont;
    }

    public FontUIResource getMenuTextFont() 
    { 
        return getControlTextFont();
    }

    public FontUIResource getWindowTitleFont()
    { 
        return getControlTextFont();
    }

    public FontUIResource getSubTextFont() 
    { 
        return _smallFont;
    }   
}

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
MisterJava: zit er bij de Java SDK niet al een voorbeeld met de naam MetalWorks en heeft dat niet ook iets met Skinnetjes en Themes te maken ??
Idd, die gebruikt ook MetalThemes. Het is wel dezelfde LookAndFeel: MetalLookAndFeel.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Nog een klein vraagje : Ik heb nu dmv UIManager ingesteld dat de crossplatform UI moet worden gebruikt :
code:
1
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

Hoe verander ik dat in de metal look and feel ?? Ik kan het ook wel opzoeken maar dat duurt zo lang , omdat die docs best lang zijn :( Maar goed, ik ben een luie programmeur :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
javax.swing.plaf.metal.MetalLookAndFeel (= cross platform look and feel trouwens).

Maar het zou wel prettig zijn als je nu eens zelf de API docs ging leren gebruiken. Lui zijn is stoer, maar ook suf.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
OK :) Ik heb die Docs nu gedownload en ik zal ze es wat vaker gaan gebruiken *D

Verwijderd

Topicstarter
Ja mensen, heb iknet eindelijk een programma gemaakt die die PandoramixMetalTheme gebruikt, en dan werkt het niet !! Zie mijn andere topic in de Programming forum: [java] fout in runtime ?

Het zit zo: de runtime geeft een fout direct alsik het programma start. Hij zegt dat er een fout zit in de nativa code buiten de VM (in c:\windows\system\dbghelper.dll) als ik de theme uitschakel werkt alles gewoon. Hoe zit dit nou ??

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op woensdag 24 oktober 2001 17:19 schreef -P@tRiCk- het volgende:
hier :

http://www.wasigh.com/javahova/forum/viewtopic.php?fid=1&tid=46

't is gewoon een reactie op je eigen topic :)
offtopic:
we zijn ondertussen over op een ander forum en de link is ook anders:
http://www.wasigh.com/javahova/forum/topic.php?id=46
Pagina: 1