[Java]Sluiten pop-up in apptivity

Pagina: 1
Acties:

  • Cai
  • Registratie: December 2001
  • Laatst online: 16:24
Deze vraag heb ik twee dagen geleden ook al geplaatst met het gevolg dat de thread gesloten werd. Ik begrijp nu waarom de verwarring is ontstaan in die thread.

Het programmeren in Apptivy is niet hetzelfde als in JBuilder of dergelijke java compilers. De reden dat ik apptivity gebruik is dat mij dat opgedragen is van mijn docent. Ik heb in de tussentijd ( tussen vandaag en twee dagen gelden) meerdere tutorials doorgelopen en de voorbeelden die daar gegeven werden waren allemaal niet van toepassing. Hiervoor mijn excuses voor de opgelopen irritatie van mijn kant over het niet werken van de gegeven voorbeelden.

Ook werd er geklaagd dat ik slechte variable namen gebruikte, als je in apptivity een window aaamaakt hernoemt hij die op numerieke volgorde, hetzelfde met de forms.

Probleemomschrijving:
Wat ik wil doen is een pop-up window sluiten

Java:
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
import java.applet.*;
import java.net.*;
import java.text.*;

import jdbc.math.*;
import jdbc.sql.*;

import progress.apptivity.client.*;
import progress.apptivity.igui.*;
import progress.apptivity.igui.bean.*;
import progress.apptivity.bean.*;
import progress.apptivity.bean.util.*;

import com.indius.base.*;

import netscape.application.*;

public class Form3 extends abForm
{
    public boolean OnMouseDownbutton1 (MouseEvent ev)
    {


        Window2 w2 = new Window2(theApp(), "");
        w2.init();
        w2.setTitle(w2.m_strCaption);
        w2.showModally();



        return(false);
    }

Afbeeldingslocatie: http://paans.dhs.org/scr1.jpg

Door het drukken van deze knop word window2 geopend en automatisch form2 in window2(Form 2 is het enige window)

code window2
Java:
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
class Window2 extends abExternalWindow
{
    public Window2(abEnv env, String name)
    {
        super(env, name);
    }

    public void init()
    {
        //$BEGIN_CREATE_OBJECTS
        m_Form2 = new Form2(theApp(), "Form2");
        m_Form2.setHorizResizeInstruction(View.WIDTH_CAN_CHANGE);
        m_Form2.setVertResizeInstruction(View.HEIGHT_CAN_CHANGE);

        //$END_CREATE_OBJECTS

        // Code to customize member objects goes here

        //$BEGIN_INIT_OBJECTS
        m_Form2.init();
        Rect _prefSize = m_Form2.getBounds();
        Size _winSize = windowSizeForContentSize(_prefSize.width, _prefSize.height);
        sizeTo(_winSize.width, _winSize.height);
        addSubview(m_Form2);
        center();

        //$END_INIT_OBJECTS
    }

    public void performCommand(String command, Object arg)
    {
        //$BEGIN_DISPATCH_EVENTS

        //$END_DISPATCH_EVENTS
        super.performCommand(command, arg);
    }

    public boolean update( Object observed, Object arg )
    {
        return super.update(observed, arg);
    }

    public static void schermsluiten()
    {
       //Dit is de zelfaangemaakte methode
    }

    //$BEGIN_DECLARE_OBJECTS
    Form2 m_Form2;

    public String m_strCaption = "Window2";


    //$END_DECLARE_OBJECTS
}


Volgens mij moet ik in de class window2 een methode zetten om deze te kunnen sluiten. Wat ik bijvoorbeeld geprobeerd heb in de zelfaangemaakte methode is: Dispose().Krijg de foutmelding dat er geen statische referentie aangemaakt mag worden.

of
This.Dispose(). Foutmelding: Unknown variabele.

En in form2 refereren naar die methode.

code form2
Java:
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
public class Form2 extends abForm
{
    public boolean OnMouseDownbuttonsluiten (MouseEvent ev)
    {
                       //referentie naar de methode in window2
        return(false);
    }
    public Form2(abEnv env, String name)
    {
        super(env, name);
        m_formContent = (abContainerView) contentView();
    }

    public void init()
    {
        super.init();
        setFont(new Font("DialogInput", Font.PLAIN, 14));

        //$BEGIN_CREATE_OBJECTS
        contentView().sizeTo(abUtil.lp2dp(3134), abUtil.lp2dp(2110));
        Font abDefaultFont = new Font("Helvetica", Font.PLAIN, 12);
        ((abContainerView)contentView()).setBackgroundColor(Color.lightGray);
        buttonsluiten = new abButton(theApp(), "sluiten");
        buttonsluiten.setFont(abDefaultFont);
        addObj(buttonsluiten, 1L, Color.lightGray, Color.black, 625, 1250, 2000, 625);
        buttonsluiten.setCommand(abGUIConst.ACTION);
        buttonsluiten.setTarget(this);
        //$END_CREATE_OBJECTS

        // Code to customize data-bound controls goes here

        //$BEGIN_INIT_OBJECTS
        buttonsluiten.registerListener
        (
            new abEventAdapter()
            {
                public boolean mouseDown(MouseEvent e)
                {
                    return OnMouseDownbuttonsluiten(e);
                }
            }
        );
        sizeTo(contentView().bounds().width + border().widthMargin(), contentView().bounds().height + border().heightMargin());
        //$END_INIT_OBJECTS
    }

    public void performCommand(String command, Object arg)
    {
        //$BEGIN_DISPATCH_EVENTS

        //$END_DISPATCH_EVENTS
        super.performCommand(command, arg);
    }

    public boolean update( Object observed, Object arg )
    {
        return super.update(observed, arg);
    }


    private final void addObj(abI_Controllable comp, long tabPos, Color bg, Color fg, int x, int y, int w, int h)
    {
        Rect r = new Rect( abUtil.lp2dp(x),abUtil.lp2dp(y),abUtil.lp2dp(w),abUtil.lp2dp(h) );
        control().addObj(comp, (int)tabPos, bg, fg, r);
    }

    //$BEGIN_DECLARE_OBJECTS
    abButton buttonsluiten;
    public String m_strCaption = "Form2";
    //$END_DECLARE_OBJECTS
    abContainerView m_formContent;
}

Afbeeldingslocatie: http://paans.dhs.org/scr2.jpg


Hoop dat iemand apptivity een beetje kent, ik kan er namelijk ook weinig over vinden op internet.

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 11-07 12:45
Als die abExternalWindow uiteindelijk Window extend, zou dispose() (zonder hoofdletter) moeten werken volgens mij.

  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Ondanks je uitleg vind ik het een beetje vaag maar goed.
Als je die window wil sluiten dan doe je dat idd door this.dispose();

Jij hebt this met een hoofdletter geschreven dus dan ziet de compiler het als een variabele en die kent hij niet, this is een verwijzing naar het object waar je momenteel in werkt en objecten zijn standaard met kleine letters. Dat geldt ook voor dispose, dat is een methode en ook die schrijf je met een kleine letter. Probeer eerst die dingen eens te wijzigen dan zou je al een eind verder moeten zijn.

Leeg


  • Cai
  • Registratie: December 2001
  • Laatst online: 16:24
Sorry dat zijn tikfouten in m'n post

als ik this.dispose(); in het form zet, dus bij de event van mousedown, zegt de error dat de functie dispose() niet herkend word in het form.\

Als ik this.dispose(); in het window zet zegt de error dat hij de variabele this niet herkend.

in het proggen let ik goed op case-sensitive, in het posten wat minder.
Foutje dat ik moet afleren

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je moet je eigen gemaakte methode eerst ook eens niet static maken. Anders verwijst this natuurlijk nooit naar een instantie
dit
Java:
1
public static void schermsluiten()


moet dus dit
Java:
1
public void schermsluiten()

worden. In een static methode kan this natuurlijk nooit naar een instantie van het object verwijzen.

edit:
Je moet dan natuurlijk wel een referentie naar een instantie van Window2 hebben

[ Voor 12% gewijzigd door Woy op 15-05-2003 12:02 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Cai
  • Registratie: December 2001
  • Laatst online: 16:24
En daar ligt dus juist het probleem, hoe refereer ik dus naar die variabele w2, oftewel window2

Ik heb vandaag met mijn docent het erover gehad en die wist er ook geen oplossing voor.

De conclusie was: Apptivity is "Apart" lol

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Dit is wel heel erg basic hoor. Je kan toch bijvoorbeeld bij de constructor van Form2 een referentie meegeven of een setMethode gebruiken of iets dergelijks.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Cai
  • Registratie: December 2001
  • Laatst online: 16:24
Basic valt wel mee, als mijn docent JAVA er ook niet uit komt.

Wat wel kan echter is achter de button de code hideParentWindow() plaatsen, hierdoor verberg je het venster. Nu dus zoeken of er ook iets bestaat als disposeParentWindow() of iets dergelijks. Iemand bekend met deze commando's

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
als je hideParentWindow() kan doen dan is er waarschijnlijk een property parent of iets dergelijks. dus dan zal er iets van getParent() zijn.
als je dan gewoon
Java:
1
getParent().dispose();

doet zou het werken. En het is inderdaad heel erg basic. Ik weet niks van dat apptivity af maar als jouw leraar daar echt serieus geen antwoord op weet dan is hij het IMHO niet waard om docent java te zijn. Lijkt me eerder dat je docent het je gewoon even zelf uit laat zoeken omdat het toch wel vrij belangrijk is dat je dit soort dingen snapt als je goed java wil leren programmeren

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Cai
  • Registratie: December 2001
  • Laatst online: 16:24
method getparent not found. Hou aub nou even op met dat ge-basic, ik ben zeer dankbaar voor je hulp en ik hoop elke keer dat het werk, maar ik heb zelf ook al genoeg dingen geprobeerd en dat apptivity is gewoon een brak programma, (naar mijn mening), het blijkt dat het niet zo basic is.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan natuurlijk wel boos worden enzo maar zoals ik al zei weet ik niks van Apptivity en probeer ik je alleen in de goede richting te helpen. En door elke keer te roepen dat apptivity een brak programma is schiet je ook niet op. Ik denk dat ik ondertussen al wel genoeg hints heb gegeven om het op te kunnen lossen. Als ik jou was zou ik dus nog eens goed in de documentatie kijken van apptivity om te kijken of er niet iets van een parent of getParent() is. Anders zul je toch zelf moeten zorgen dat je een referentie doorgeeft met een methode of met de constructor

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Cai
  • Registratie: December 2001
  • Laatst online: 16:24
Ik word niet boos, maar als je zelf hard aan het werk bent en er loopt iemand te roepen dat het allemaal zo basic is, terwijl diegene het ook niet met 100% zekerheid durft te zeggen, snap ik niet waar zo'n opmerking voor nodig is. Sfeerverziekend, genoeg over gezegd hoop ik. Geen zin om er op door te gaan.

Hoe kom ik erachter in welke class die method hideParentWindow() staat, dan kan ik die helemaal uit gaan pluizen.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sorry hoor maar je weet toch op welke class je hideParentWindow() aanroept? Dan weet je toch ook in welke class hij zit?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 11-07 12:45
Zitten er helemaal geen API docs bij apptivity?

  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Ok ik ken dat apptivity niet maar dat moet geen verschil maken voor de manier waarop je dingen doet lijkt me.

Je window is een subklasse van abExternalWindow, die bevat dus diverse methoden die je kan gebruiken, de opmerking over static methoden hierboven is terecht die had ik over het hoofd gezien! Zoals Xanthus al zegt moet je even zoeken naar een Api van abExternalWindow waarin de methoden staan gespecificeerd.

Leeg


  • Cai
  • Registratie: December 2001
  • Laatst online: 16:24
Voor de geinteresseerden:

ik heb de api van abform doorgebladerd en wat blijkt:
hideParentWindow() is een soort nieuwe methode voor het oude destroyParentFrame();

Beetje kromme naam als het exact hetzelfde doet dat hide, maar ja, als het maar doet wat het doen moet laten we maar zeggen.

offtopic:
Mensen bedankt voor de hulp
Pagina: 1