Új hozzászólás Aktív témák
-
-
Stylie
tag
Pl
import java.awt.event.*; //eseménykezeléshez kell
import javax.swing.*; //gui felépítéshez kell
public class GombTeszt extends JFrame implements ActionListener{ //osztály, mely a JFrameből öröklődik és implementálja az ActionListener interfészt az eseménykezeléshez
JButton gomb = new JButton("Ez itt egy Gomb, amire rákattintva bejön egy ablak!"); // gomb
public GombTeszt(String title){ //konstruktor
setTitle(title); //ablak "címének" beállítása
add(gomb); //gomb hozzáadása az ablak konténeréhez
gomb.addActionListener(this); //gomb eseményfogadásának képességét aktiváljuk :)
pack(); //komponensek elrendezése
show(); //megjelenítés
}
public void actionPerformed(ActionEvent e) { //ActionListener interfész metódusának implementálása
if(e.getSource()==gomb){ //esemény forrásának vizsgálata
JFrame masikablak = new JFrame("Új ablak"); //új ablak
masikablak.pack();
masikablak.show();
}
}
public static void main(String[] args){
GombTeszt ablak = new GombTeszt("GombTeszt");
}
} -
ZéZé@PH
aktív tag
Az importokkal külső osztályokat hozol be a programodba.
Alapból nem létezik a Math.PI objektum, de amint beimportálod, a projekted számára látható lesz.Upsz egy kicsit lemaradtam
[ Szerkesztve ]
''Elménk nem megtöltésre váró edény, hanem lángra lobbantandó tűz!'' Plutarkosz
-
amargo
addikt
Több szálon szeretnéd használni? Leginkább az a kérdés. Mert az, hogy egy osztály erőforrásait elérd egy másikból, több lehetőséged is adott hozzá. Hogy a legegyszerűbbet írjam: static, referencia, események.
De a másik kérdésem, hogy miért a Canvas-ból kell a JFrame-t módosítani? Ha onnan tudod megoldani, akkor küldjön ki egy eseményt, amire a JFrame fel van iratkozva.“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
amargo
addikt
Szia!
Én sem ismerem a java osztályok nagy részét, mert nem kimondottan java-ban fejlesztek.
"egér pozícióját akarom a status barba updatelni"
Gondolom designer-el raktad fel az objektumokat - vagy nem, nem változtat sokat a lényegen -, lényegiben az objektumok egy form-on - mainPanel - belül helyezkednek el. Azaz van objektum listád.Ebben az esetben a legfapadosabb módszer - ettől még nem feltétlen rossz -, ha a form objektumai között a statusbar-ra hivatkozol egyből és át adod neki egérkoordinátáit formázottan.
Tehát a canvas-nak lesz egy MouseMoved eseménye. Ahol eléred a StatusBar egy elemét, pl.:
private void canvas1MouseMoved(java.awt.event.MouseEvent evt) {
String pos = "x:" + Integer.toString(evt.getX()) + ", y:" + Integer.toString(evt.getY());
this.statusMessageLabel.setText(pos);
}“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
Osiris
őstag
Majd kipróbálom linux alol is, de most nincs rá időm sajnos. Az az érzésem, hogy az ősöreg extra csomagban (amit a magyar java tankönyvek használnak pl. konzolról történő adatbevitelre) lehet valami elavulva.
ArchElf:
Csak a vesszősökre. Tudsz valami megoldást?Az extra csomagot Angster Erzsébet készítette a Java 1 és Java 2 című tankönyveihez.
[ Szerkesztve ]
-
Osiris
őstag
Nekem erre:
import java.io.Console;
public class consoleClass {
public static void main(String[] args) {
Console console = System.console();
if (console == null) {
System.err.println("sales: unable to obtain console");
return;
}
String username = console.readLine("Enter username: ");
System.out.println(username);
}
}Ezt dobja:
run:
sales: unable to obtain console
BUILD SUCCESSFUL (total time: 0 seconds)Mi lehet a gond, miért nem kéri be a felhasználónevet?
[ Szerkesztve ]
-
Karma
félisten
Csinálnod kell egy komponenst, amit a Frame gyerekének adsz, és az végzi a rajzolást. Vagy csinálsz egy BufferedImage-et, arra rajzolod a hisztogramot, és a paint metódusban egyszerűen kirajzolod a tartalmát.
Valamilyen leszármazást kell csinálnod, nem erőszakolhatod meg a rendszert. Ja és a getGraphicsot felejtsd el, az csak painten belül életképes.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
Válaszolok én is egy kérdéssel, ugyanis egyáltalán nem jött át, hogy a Histogram osztályodnak milyen szerepet szántál. A kódrészlet alapján ez csinálja a számítást, a rajzolást és az ablak feldobását is, ami mindezt megjeleníti? Mert azért ez durván sok felelősség egy osztálynak.
A privát JPanel megoldás egynek elmegy. Egy másik ilyen tákolat meg ha a Histogram lenne a JFrame leszármazott, nem csak egy Object.
A lényeg az, hogy a paint() felüldefiniálást nem úszhatod meg. Máshol hiába próbálsz rajzolni a kódodban, az Swinget nem fogja érdekelni.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
Szerintem egyiket se, inkább a Simple-t.
De legalább egy pull parsert, ha mindenképp kézzel akarod írni. Az adott node kiválasztására meg általánosságban az XPath való - DOM parsolás után legalábbis, mert stream parsolásnál nehezen értelmezhető.
[ Szerkesztve ]
“All nothings are not equal.”
-
modder
aktív tag
Hali,
http://en.wikipedia.org/wiki/Java_API_for_XML_Processing Ez egy jó összefoglalónak tűnik, hogy melyik API mire való. az XMLEventReader azt hiszem StAX specifikus dolog.
A DOM ugye fogja az egész dokumentumot és beparsolja egy DOM fába.
A SAX az egy push parser: ahogy parsolja a dokumentumokat, új tag-eket, és attribútumokat talál, callback metódusokat hívogat, amiket az alkalmazásod implementál, és el tudod dönteni, hogy mit akarsz csinálni az éppen aktuális információval.
A StAX parser hasonló, csak ott az alkalmazás kívülről irányítja a parsolást: lépteti a parsert előre.Nyilván egy szálban tökre mindegy, hogy push vagy pull, szerintem akkor lehet érdekes ez, amikor van egy parsoló szál és egy feldolgozó szál.
A legegyszerűbb a DOM, mert miután a parser készített belőle egy objektum modellt, a tag-ek objektumok hierarchiájaként fog megjelenni, és szépen a saját metódusain keresztül kereshetsz/iterálhatsz benne, meg is változtathatod. Továbbá, ami nagyon hasznos lehet számodra, hogy XPath lekérdezésekkel le tudod kérni csak azokat a node-okat, amikre szükséged van: http://www.ibm.com/developerworks/library/x-domjava/#3
Az, hogy melyiket válaszd eléggé függ attól, hogy mit akarsz elérni:
Ha nem fontos a sebesség: Ha egy asztali alkalmazást csinálsz, semmit nem fogsz profitálni a StAX parserrel a DOM-hoz képest, nem lesz akkora a különbség. Hatalmas RSS-nél mondjuk (hasraütés) pár száz ms-t veszítesz. (DOM)Ha fontos a sebesség: Egy google readerszerű alkalmazást akarsz, ami éjjel nappal olvassa az RSS-t, és mondjuk párhuzamosan amennyit tud. Akkor nem mindegy, hogy a végső reprezentáció és az eredeti XML között fel akarsz-e építeni és tárolni ideiglenesen a memóriában egy DOM fát.
Esetleg fontos a gyors válasz: te real-time akarod beparszolni az RSS-t, és minél gyorsabban pl. betolni adatbázisba a tartalmát vagy más reprezentációban tárolni. (SAX)Streaming: Ez kapcsolódik az előzőhöz: az RSS-t egyből más reprezentációban akarod elmenteni gyorsan, vagy továbbküldeni a hálózaton. (StAX)
Kell-e minden adat: elképzelhető, hogy nem kell az RSS-ből minden adat, csak a link neve például, akkor a többi adat teljesen fölösleges, fölösleges is tárolni őket, a parsolás folyamán csak azokat az adatokat tárolod le, amik szükségesek. (StAX)
Én azt mondom, amíg nem hatalmas mennyiségű RSS feedről, rettentő reszponzív alkalmazásról, streamingről, vagy nagyon kevés memóriáról van szó, addig használj DOM-ot.
[ Szerkesztve ]
-
-
sutszi
veterán
Én...dehogy.
Amúgy érdekes feladat...[ Szerkesztve ]
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
addikt
Ez így nem fog működni, mert semmi garancia sincs arra, hogy a két szám nagyjából ugyan ott helyezkedik el, ráadásul arra sem, hogy ugyan olyan színűek a számok. Azt hittem ennél egyszerűbb feladatra gondolsz, pl simán megkeresni egy mintát egy nagyobb képen, de ez így nehéz lesz, és én nem is értek a képelemzéshez
[ Szerkesztve ]
-
Karma
félisten
google://OpenCV+number+recognition
Amikor először írtad a problémát, keresgéltem és úgy láttam hogy kulcsrakész példa van erre. (Most meg buta mobilról vagyok.)
Az OpenCV-nek van kész Java API-ja (JNI-vel). De van open szószban a Tesseract nevű lib, a tess4j wrapperrel.
[ Szerkesztve ]
“All nothings are not equal.”
-
PandaMonium
őstag
Szia.
- Ahhoz, hogy ilyet tudj csinálni az alap Java nem elég, kell valami API ami natívan kommunikál az OS-el, mert sima Java-ban csak akkor kapsz KeyEvent-et ha focusolva van az ablakod.
- Igen, a Java képes buborék üzenetek dobására, méghozzá úgy, hogy TrayIcon-t csinálsz az alkalmazásodnak és a TrayIcon .displayMessage(...) funkcióját használod.What I cannot create, I do not understand
-
Karma
félisten
De egyébként muszáj Java hozzá? Ilyen alacsonyszintű mókázáshoz jobb a .NET és a WinAPI interface...
Meg ott a Windows+PrintScreen kombó is.
Na de ha az eredeti baklövéstől nem akarsz elválni, nézd meg ezt a kérdést.
[ Szerkesztve ]
“All nothings are not equal.”
-
PandaMonium
őstag
JInput -al is lehet megoldható amit szeretnél, de nem vagyok benne biztos. Nézz utána picit.
What I cannot create, I do not understand
-
Karma
félisten
A naív és kevésbé szép, de legalább ronda (India style) és általános megoldás, ha List<Map<String, String>>-et vagy List<Map<String, Object>>-et gyártasz az adatból.
Dobna rajta, ha definiálnál egy osztályt az elemre, melynek olyan tagváltozói vannak, mint a belső array kulcsai. Így típusbiztos a parser kimenete.
Egyébként olyan plusz előnye is lenne, hogy használhatnál okosabb eszközöket, mint például JAXB-t vagy a Simple-t a feldolgozáshoz ahelyett, hogy lábbal hajtod a DOM parsert.
“All nothings are not equal.”
-
PandaMonium
őstag
Csak egy kis mellékes infó, kiegészítés képpen Karma válaszához:
Java-ban sok módon lehet XML-t parse-olni, pontosabban én 3 -at ismerek: DOM, SAX, StAX.
Amit most Te csinálsz az a DOM parse-olás. Én személy szerint a SAX-ot preferálom, pont azért mert akkor nem kell a NodeList-ekkel bajlódni, egyszerűbb lesz az egész folyamat. Ha érdekelne a dolog itt egy egész pofás tutorial, hogy melyiket, hogy kell csinálni: [link]What I cannot create, I do not understand
-
veterán
-
veterán
-
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen