Avatar billede janus_007 Nybegynder
18. december 2002 - 00:56 Der er 6 kommentarer og
1 løsning

Er det her en god fremgangsmåde??

Jeg sidder og prøver at lære lidt Java *G*, og vil gerne starte ordentligt op. Derfor ville jeg høre meninger/ erfaringer med nedenstående måde at implementere div. listeners på:

//MainLyForFun

import javax.swing.*;
public class MainLyForFun {

    private GuiController myGuiController;
    public JTextArea textAction;

    public MainLyForFun(){
        textAction = new JTextArea("No action");
        myGuiController = new GuiController(this);
        JComboBox aktuelListe = new JComboBox();
       
        aktuelListe.addActionListener(myGuiController);
    }


    public static void main(String[] args) {
      ...
    }

}

-- OG --
//GuiController

import javax.swing.event.*;
import java.awt.event.*;

public class GuiController implements ActionListener, ListSelectionListener {
    public MainLyForFun mainly; 
   
    public GuiController(MainLyForFun m)
    {
        m = mainly;
    }

    public void valueChanged(ListSelectionEvent event){

    }

    public void actionPerformed(ActionEvent e) {
        mainly.textAction.setText("Performing some action");

    }
}
Avatar billede magoo20000 Nybegynder
18. december 2002 - 01:08 #1
Det giver en fin opdeling mellem ren gui og eventhåndtering - har selv brugt det er del. Dog kan del blive lidt besværligt at overskue de forskellige events, når man taler om mange gui-klasser med mange tilhørende controllers.

Din main bør dog kun ligge i gui'en, hvis du tester!
Avatar billede magoo20000 Nybegynder
18. december 2002 - 01:09 #2
Jeg ville nok bare håndtere det hele i gui-klasserne.
Avatar billede janus_007 Nybegynder
18. december 2002 - 09:35 #3
Du skriver "Din main bør dog kun ligge i gui'en, hvis du tester!", hvad mener du med det ??

Jeg kan godt se en rimelig stram binding imellem de 2 klasser, specielt via "mainly.textAction.setText..", kunne man lave det smartere på en måde?
Avatar billede magoo20000 Nybegynder
18. december 2002 - 13:44 #4
Man plejer som regel at have en klasse, hvor main-metoden befinder sig i  - f.eks. en StartupHandler.java. - gui'en bør ikke have ansvaret for at starte hele din app. op.

Jeg ville nok koge de to ovenstående klasser sammen i en:

class MainLyForFun extends JFrame implements ActionListener....

og så tilføjer du lytterer til de rette komponenter:

JTextArea textAction = new JTextArea("No action");
textAction.addActionListener(this);

og ActionListener interfacet siger at du skal implementere actionPerformed, så:

public void actionPerformed(ActionEvent e){
if(e.getSource() == textAction){
.......
}
Avatar billede janus_007 Nybegynder
18. december 2002 - 21:37 #5
Jo det ville vel nok også være det nemmeste lige i det her tilfælde, men det var bare ment som et oplæg og jeg kunne snildt forestille mig at projektet kunne vokse sig ganske, ganske stort indenfor kort tid! - Derfor er det vel en god idé, ligesom at have nogle retningslinjer for hvordan og hvorledes man kunne lave strukturen (som man jo ikke helt lige kan analysere sig frem, men som kommer med erfaringen), så den er rimelig skalérbar.
Avatar billede magoo20000 Nybegynder
18. december 2002 - 23:36 #6
Man kunne da muligvis lave en guicontroller, der var genbrugelig, men om det virkelig ville rykke i den sidste ende tvivler jeg på - har ikke den store erfaring med gui (er mere til funktionalitet og db!).

Så engang en projekt, hvor nogen havde brugt factory pattern + et andet til noget genbrugelig gui-ting.

Ser lige efter.
Avatar billede janus_007 Nybegynder
29. december 2002 - 18:16 #7
Kommer du med næste svar eller skal jeg bare give dig pointene??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester