praegune kellaaeg 20.06.2025 11:19:02
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
lehm2
Kreisi kasutaja

liitunud: 19.09.2004
|
17.09.2008 21:39:05
[java]Swing ja MVC |
|
|
Olen nüüd siis tegelenud natukest aega Swing API-ga ja võin öelda, et suurema programmi kohalt võib koodi haldamine ja uuenduste sisseseadmine raskeks muutuda. Selleks tuligi meelde veebimaailmast, selline tore pattern nagu seda on MVC, kuid ühtegi korraliku tutoriali pole ma leidnud. Olen lugenud küll mõningaid, kuid MVC mustriga kehtib reegel, et ilma ühe klassita peaks toimima ka teine, et kasutatud on palju sellist value pass by parameter. Näiteks controller klassi, loomisel pannakse parameetriks View class. Loodan, et väga segaseks see asi siin ei läinud, kuid arvatavasti läks.
Mõneski artiklis oli toodud M V C vaheliseks suhtlemiseks observer pattern. Siiski on see teema, kus minu jaoks Swing-ga töötades palju segadust.
_________________ Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust ! |
|
Kommentaarid: 15 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
axeon
HV vaatleja

liitunud: 09.05.2003
|
18.09.2008 10:27:58
|
|
|
Võib-olla Springi RCP
Swingi projektid, mis kasutavad ära Springi raamistiku, kõlab üsna hästi.
Ise kasutan veebirakenduste treimisel Springi juba aastaid. Springil ka oma hästitoimiv MVC lahendus olemas.
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
lehm2
Kreisi kasutaja

liitunud: 19.09.2004
|
18.09.2008 11:40:29
|
|
|
Tundub huvitav projekt uurin kindlasti lähemalt, kuid millegi pärast Springi kodulehel saan igalt lingilt errori. Kas teil on sama või asi ainult minul? An error has been encountered in accessing this page.
_________________ Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust ! |
|
Kommentaarid: 15 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
axeon
HV vaatleja

liitunud: 09.05.2003
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
lehm2
Kreisi kasutaja

liitunud: 19.09.2004
|
19.09.2008 21:57:53
|
|
|
Põhimõtteliselt leidsin ühe frameworki välise kasutamise võimaluse ka, kuid paistab et koodi tuleb kohe hulganisti juurde kirjutada.
http://java.sun.com/developer/technicalArticles/javase/mvc/
Üritasin ka valmistada mingi näite, MVC põhjal.
Model:
java:
|
package myTemperatureExample; import java.util.Observable; private int temp; public Temperature() { this.temp = 0; } public Temperature(int temp) { this.temp = temp; } public int getTemp() { return temp; } public void setTemp(int temp) { this.temp = temp; setChanged(); notifyObservers(); } }
|
View ja Controller, tegelikult oleks vaja Appi loomine eraldi faili panna ja View tagastaks ainult JPaneli. Probleeme võib tekkida siis, kui on vaja rakendada actionlistenern-na vähe pikemat koodi või on vajadus teisse faili viia. Mis arvate?
java:
|
package myTemperatureExample; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Observable; import java.util.Observer; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; Temperature t; public TemperatureGUI() { Controller c = new Controller(); addButton.setActionCommand("ADD"); addButton.addActionListener(c); removeButton = new JButton("Remove"); removeButton.setActionCommand("REMOVE"); removeButton.addActionListener(c); t = new Temperature(); t.addObserver(this); t.setTemp(38); getContentPane().add(mainPanel); setSize(150, 150); } @Override if (ob instanceof Temperature) { textfield. setText(Integer. toString(t. getTemp())); } } @Override String command = e. getActionCommand(); int currentTemp = t.getTemp(); if (command == "ADD") { currentTemp++; t.setTemp(currentTemp); } else if (command == "REMOVE") { currentTemp--; t.setTemp(currentTemp); } System. out. println("Temp set to:" + t. getTemp()); } } public static void main (String[] args ) { @Override public void run() { new TemperatureGUI().setVisible(true); } }); } }
|
_________________ Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust ! |
|
Kommentaarid: 15 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|