Forum huvudsida -> Programmering -> Uppdatering av fönster
Sidor: 1
Osito | 22:15 - 19:e Mars 2006 | Post #1 | |
Medlem Inlägg: 32 Skicka PM |
Har ett problem med ett program i java. Har ett intärntfönster som man infogar bilder i (kortfattat...). Problemet är att fönstret inte uppdaterar sig när man infogar bilden utan man måste "skaka" på det för att den skall visa sig. Vad är problemet och finns det någon "refresh" funktion/class man kan anropa som löser det hela? Vore väldigt snäll om någon kunde hjälpa oss då detta är ett projektarbete som snart skall var inlämnat... Här är hela programet (väldigt stor så det får inte plats i detta fönstret...) Ladda hem //Björn ------------------------- //Osito |
Independence | 22:35 - 19:e Mars 2006 | Post #2 | |
Administratör Inlägg: 1800 Skicka PM |
,,r det swing eller awt? ------------------------- Vi är riddarna som säger fiskbulle! |
Osito | 11:39 - 20:e Mars 2006 | Post #3 | |
Medlem Inlägg: 32 Skicka PM |
Vi använder swing till stor del fast vissa inslag av awt, så det är lite blandat. Beror mest på att vi först lärde oss awt och sedan, själva, gick över till swing. ------------------------- //Osito |
Nissebosselasse | 12:24 - 20:e Mars 2006 | Post #4 | |
Medlem Inlägg: 490 Skicka PM |
Kan du inte bara anropa fönstrets/frame-klassens (länge sen jag programmerade i Java) Refresh, eller liknande? Eller Paint heter den kanske. ------------------------- http://pushingcows.se Gula Nallen |
Independence | 18:11 - 20:e Mars 2006 | Post #5 | |
Administratör Inlägg: 1800 Skicka PM |
Verkar som paint, repaint eller update är rätt kommando. Finns mer att läsa här: http://java.sun.com/products/jfc/tsc/articles/painting/ ------------------------- Vi är riddarna som säger fiskbulle! |
Osito | 08:11 - 21:a Mars 2006 | Post #6 | |
Medlem Inlägg: 32 Skicka PM |
Skall ta ett titt på det. Men tror det är hela fönstret som behövs uppdateras inte bra ikonerna. Så repaint kanske inte fungerar? (har för mig att det är för bilder...) ...terkommer när vi testat... ------------------------- //Osito |
Nissebosselasse | 09:20 - 21:a Mars 2006 | Post #7 | |
Medlem Inlägg: 490 Skicka PM |
Men fungerar inte paint-händelser i Java precis som i de flesta andra fönstersystem, dvs att händelsen skickas till fönstret, som tvingar alla kontroller som finns inuti det att ritas om, oavsett vad det är för filurer? ------------------------- http://pushingcows.se Gula Nallen |
Osito | 08:26 - 24:e Mars 2006 | Post #8 | |
Medlem Inlägg: 32 Skicka PM |
Hur skiver man egentligen repaint sattsen (vilken skall användas vid swing, om jag fattat rätt)? Vi har testat runt bra mycker nu, utan resultat. Har börjat fundera i banorna att man har "tomma" bilder frånbörjan som sedan byts ut mot de man vill ha. Detta krånglade också.... Om jag har en JLabel med en IconImage med värdet s1 och sedan en variabel s1 som är en string (sök väg). Borde jag inte kunna ändra s1 då i action preform? Hur? Blir tokigt! Måste jag fortfarande använda repaint? ------------------------- //Osito |
Nissebosselasse | 09:09 - 24:e Mars 2006 | Post #9 | |
Medlem Inlägg: 490 Skicka PM |
Jag har ingen möjlighet att testa koden här (eller någon annanstans heller, kom jag på nu... ), men i main.java, precis i slutet av main-metoden, vad händer om du gör följande: // Din kod fonster.setVisible(true); // Lägg till detta fonster.repaint (); Men jag tycker det är märkligt om man måste själv anropa det första gången...iofs kanske felet ligger någon annanstans. ---- Nu är jag kanske ute och cyklar, men funkar detta (samma ställe som ovan i samma fil): // Din kod fonster.setVisible(true); // Lägg till detta fonster.paintAll (fonster.getGraphics()); ------------------------- http://pushingcows.se Gula Nallen Senast redigerad 09:12 - 24:e Mars 2006 |
Osito | 09:56 - 28:e Mars 2006 | Post #10 | |
Medlem Inlägg: 32 Skicka PM |
Sista funktionen fungerade, dock fick jag lägga den där det skulle uppdateras (lat.java, actionPerformed, JPanel). Tackar för hjälpen! Skulle behöva ett tips. Har en JPanel med tre komponenter. två skall ligga uppe och 1 där nere. BorderLayout har krånglat hittils. Grid blir bara konstig, så vad skall jag göra? En kombo? ------------------------- //Osito |
Nissebosselasse | 10:35 - 28:e Mars 2006 | Post #11 | |
Medlem Inlägg: 490 Skicka PM |
En kombo? Två snabba steg bak och sen fram+sparkknapp? Hur ser koden ut för din BorderLayout? ------------------------- http://pushingcows.se Gula Nallen |
Osito | 21:31 - 28:e Mars 2006 | Post #12 | |
Medlem Inlägg: 32 Skicka PM |
Ingen sådan kombo Menade att man skulle blanda några layouter, men jag löste det på enklaste sett. La in de två övre komponenterna på en JPanel och sedan la jag en 2 raders grid på huvud panelen. Blev allt dugligt Nu börjar vi komma in på krångliga grejer. Nu skall vi kunna spara, öppna och skriva ut skiten. Spara/öppna är det som prioriteras först. Lite svårt att beskriva men vi har ett intärnfönster som har ett antal JPanels med textinmatnings rutor och en panel med infogade bilder. Hur spara jag detta lättas? Några tips eller bra idéer?! ------------------------- //Osito |
Nissebosselasse | 09:47 - 30:e Mars 2006 | Post #13 | |
Medlem Inlägg: 490 Skicka PM |
Vad är det ni ska spara ner; informationen i kontrollerna (texten i textinmatningsrutan), eller själva kontrollerna (deras positioner etc.)? Tänk på att läsa in informationen från en fil på samma sätt som du sparade ner den. Själva formatet på informationen spelar sedan ingen egentligen roll, det räcker kanske med en textfil som ser ut som följande: textruta_ett Här är min lilla text i första rutan textruta_två Och texten i ruta två textruta_tre Jisses, här är det intressant text! ...där första ordet betecknar kontrollens namn, och resterande text på raden dess innehåll. Hur du läser in den här texten rent programmeringsmässigt är ju så klart upp till dig... Finns det inte till och med en tokeniseringsklass inbyggd i Java, som du kan använda till det här? (Tokenisering = som delar upp text i mindre enheter enligt ett visst mönster). ------------------------- http://pushingcows.se Gula Nallen |
Osito | 10:14 - 30:e Mars 2006 | Post #14 | |
Medlem Inlägg: 32 Skicka PM |
Det vi skall spara är det som matas in för att kunna öppna det igen i samma textruta. skall fixa en print screen på det hela. Får ta en sökning på tokenisering... ------------------------- //Osito |
Nissebosselasse | 10:54 - 30:e Mars 2006 | Post #15 | |
Medlem Inlägg: 490 Skicka PM |
Aha, okej, men då är det som jag beskrev lite i föregående post. Den informationen skulle man kunna läsa in på följande sätt: 1. Läs en rad från filen (sRad); 2. Finn första mellanslaget, eftersom: 1) första ordet är namnet på kontrollen, och 2) namnet inte får innehålla några mellanslag. Mellanslagspositionen blir int iHittat_mellanslag = sRad.indexOf(' '); 3. Kontrollens namn blir då sNamn = sRad.substring(0, iHittat_mellanslag); 4. Resterande text på raden är innehållet i textrutan: sInnehåll = sRad.substring(iHittat_mellanslag); 5. Finns kontrollen medelst namnet. Jag hittade ingen sökfunktion typ getComponent (string name), men det finns en getComponent(int index), dvs, du får loopa igenom alla komponenterna och jämföra namnen. Kanske: for (int i=0; i<frame.getComponentCount(); ++i) { if (frame.getComponent(i).getName().equals(sNamn)) { // Hittade kontrollen här, sätt egenskap frame.getComponent(i).setText (sInnehåll); } } 6. Upprepa för varje rad i filen! Någonting sådant. OBS! Koden är inte testad överhuvudtaget. ------------------------- http://pushingcows.se Gula Nallen |
Osito | 18:36 - 3:e April 2006 | Post #16 | |
Medlem Inlägg: 32 Skicka PM |
Pratade lite med vår handledare och sa att vi skulle göra så här ungefär:
Problemet är att den inte hittar pass_fonster. Vad behöver jag göra för att programet skall hitta detta object (internt fönster där allt händer)? ------------------------- //Osito |
Nissebosselasse | 21:55 - 3:e April 2006 | Post #17 | |
Medlem Inlägg: 490 Skicka PM |
pass_fonster är en lokal variabel i den första if-satsen, i metoden actionPerformed, dvs, dess synlighet begränsas till den här lilla stumpen kod: if(e.getSource() == arkivAlt[0] /*|| e.getSource() == B_nyttpass*/) { pass pass_fonster = new pass("Namnlös"); pass_fonster.setVisible(true); add(pass_fonster); } ...eftersom du deklarerar den först däri. Konstigt att din handledare inte märkte det. Eller kör han pass_fonster som en global variabel? I så fall är koden fel i vilket fall som helst. ------------------------- http://pushingcows.se Gula Nallen |
Osito | 08:23 - 4:e April 2006 | Post #18 | |
Medlem Inlägg: 32 Skicka PM |
Han har inte sett hela koden, han bara tipsade om Object funktionerna. Men hur skall jag lösa det? Lägga den utanför och bara lägga till den sedan? (har för mig det inte fungerar...) ------------------------- //Osito |
Sidor: 1
Forum huvudsida -> Programmering -> Uppdatering av fönster
Du får inte posta i den här tråden | Till toppen
Datum
2024-05-01 16:58
Vecka: 18
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.