abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 18
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 0
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 37
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
16.2. 23:13 | Nová verze

Byla vydána verze 0.92.1 svobodného multiplatformního vektorového grafického editoru Inkscape. Přehled novinek v poznámkách k vydání. Řešen je mimo jiné problém s verzí 0.92, jež rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Více v příspěvku na blogu Davida Revoye, autora open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu.

Ladislav Hagara | Komentářů: 0
16.2. 16:26 | Bezpečnostní upozornění

Byla vydána verze 1.1.0e kryptografické knihovny OpenSSL. Dle bezpečnostního upozornění 20170216 byla opravena závažná bezpečnostní chyba CVE-2017-3733.

Ladislav Hagara | Komentářů: 1
16.2. 13:03 | Pozvánky

GNOME hackaton proběhne v Brně na FIT VUT v Red Hat Labu (budova Q) v pondělí 20. února od 15:00. Registrace není nutná, ale pokud dáte na FaceBooku vědět, že plánujete dorazit, pomůže to s plánováním.

Ladislav Hagara | Komentářů: 0
16.2. 13:02 | Pozvánky

Únorový Prague Containers Meetup se koná 21. února v budově MSD. Můžete se těšit na přednášky o tom, proč a jak používat kontejnery a zároveň získat zajímavý pohled na historii a budoucnost kontejnerů.

little-drunk-jesus | Komentářů: 0
16.2. 08:55 | Zajímavý software

Google na svém blogu věnovaném vývojářům oznámil vydání verze 1.0 open source knihovny pro strojové učení TensorFlow (Wikipedie). Přehled novinek v poznámkách k vydání na GitHubu. Zdrojové kódy TensorFlow jsou k dispozici pod licencí Apache 2.0.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 655 hlasů
 Komentářů: 52, poslední 13.2. 12:45
Rozcestník
Reklama

Dotaz: Java - zmena tableModelu za behu

30.1.2011 15:05 Mitch
Java - zmena tableModelu za behu
Přečteno: 354×
Dobrý den,

píši Swing aplikaci, která má v hlavním okně tabulku a v ní zobrazuje data, podle toho, v jaké sekci se zrovna uživatel nachází. Změnu dat řeším tím, že tabulce vždy nastavím odpovídající TableModel s daty. Problém ovšem je, pokud přejdu ze sekce, kde bylo zobrazeno v tabulce třeba 50 řádků do sekce kde si jich má zobrazit jen 10, tak i po nastaveni správného tableModelu (s metodou get rowCount vracející správný počet řádků) metodou setModel si tabulka myslí, že má zobrazit stále tech 50 řádku, nikoliv jen 10. Obráceně to ale funguje korektně, tj při přechodu 10 -> 50 se zobrazí všech 50 řádků. Vůbec nevím, jak to mám té tabulce říct, že těch řádků je méně. A Java tutorials toto téma vůbec neřeší.

Tak pokud máte někdo s tím to zkušenosti, budu velmi rád za jakoukoliv radu či popostrčení.


Řešení dotazu:


Odpovědi

30.1.2011 15:13 XY
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
swing som uz davno neriesil, ale prve co ma napadlo: a co tak zmenou sekcie nevymenit len model, ale cely table komponent?
30.1.2011 15:31 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
To by určitě šlo, nicméně to není moc elegantní řešení a musel bych složitě sahat do layoutu. Výměna TableModelu mně přijde jednodušší a mnohem elegantnější.
30.1.2011 16:03 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Voláte na té tabulce tableChanged(), nebo jí dáte jinak vědět, že se data změnila? setModel() jenom zaregistruje správné posluchače, ale pokud vím, neřeší změnu dat.
30.1.2011 16:33 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Ne, tuto metodu nevolám. Zkoumal jsem jí už předtím, ale nebyl jsem sto přijít na to, jak přesně funguje a jestly je to přímo to co potřebuji. Není mi úplně jasné co jí mám předat za parametr, žádný tableModelEvent v aplikaci nemám. Respektive tableModel nemá registrovaný žádný Listener.
30.1.2011 16:49 moira | skóre: 30 | blog: nesmysly
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Trochu střílím od boku, ale nepomůže na tom modelu zavolat fireTableDataChanged()?
Překladač ti nikdy neřekne: "budeme kamarádi"
30.1.2011 16:58 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
To je lepší varianta. Pokud tedy model dědí z AbstractTableModel. Nebo bude nutné podobnou funkci vytvořit – prostě je nutné tabulce říct, že se změnil počet řádků i jejich obsah.
30.1.2011 17:37 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Toto samozřejmě dělám. Po každé změně tableModelu jej naplním daty a zavolám
tableModel.fireTableDataChanged();
Ale stejně mě ty vždy vyhodí výjimku že jsem mimo rozsah pole, tj. tabulka vola metodu tableModelu getValueAt() s rowIndexem vetsim, nežli je počet záznamu v ArrayListu.

Dyštak ještě přikládá, výjimku co to háže, ale mě z ní stále vychází, že tabulka neví o změněném počtu řádků.

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
	at gui.UzivateleTableModel.getValueAt(UzivateleTableModel.java:31)
	at javax.swing.JTable.getValueAt(JTable.java:2686)
	at javax.swing.JTable.prepareRenderer(JTable.java:5703)
	at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2072)
	at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1974)
	at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1770)
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
	at javax.swing.JComponent.paintComponent(JComponent.java:752)
	at javax.swing.JComponent.paint(JComponent.java:1029)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JViewport.paint(JViewport.java:747)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5131)
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
	at javax.swing.JComponent.paint(JComponent.java:1015)
	at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
	at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
	at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
	at java.awt.Container.paint(Container.java:1780)
	at java.awt.Window.paint(Window.java:3375)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
	at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
PS: Teď mě ještě napadá, nemůže to mít nějakou souvislost s vlákny, že se gui operace neprovádí v
SwingUtilities.ivokeLater()
?
30.1.2011 17:38 ZAH | skóre: 41 | blog: ZAH
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Spíš javax.swing.table.AbstractTableModel.fireTableStructureChanged
30.1.2011 17:52 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Tu jsem zkoušel také, bohužel bez úspěchu. Vpodstatě vše podstatné se děje v těchto dvou metodách. nejdříve se zavolá ta nastavTableModel a pak zobrazUzivatele
private void zobrazUzivatele() {
		UzivateleCol.getInstance().getUzivatele(null);			
		tableModel.setData(UzivateleCol.getInstance());
		tableModel.fireTableDataChanged();			
	}
	
	private void nastavTableModel() {		
		/*  nastavíme tabulce nový table model pro práci s uživateli */		
		
		tabulka.setModel(tableModel);
		//tableModel.fireTableStructureChanged();
tableModel.fireTableDataChanged();
	}
30.1.2011 17:56 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Pokud používáte AbstractTableModel, stačí se podívat do JavaDocu, že těch metod fireTable* tam je více a přečíst si jejich dokumentaci.
30.1.2011 18:02 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Ano, to já vše vím. Ale nic z toho nefunguje, ze zoufalosti jsem už zkoušel opravdu téměř každou blbost.
30.1.2011 18:16 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Není potřeba nic zkoušet, v dokumentaci je napsané, co která metoda dělá, případně si to můžete ověřit ve zdrojáku. Ve zdrojáku je také vidět, že když zavoláte tableChanged(null), mělo by se s modelem začít úplně od začátku. Jinak měnit model tabulky za běhu je trochu divné, měl byste měnit data v tom modelu.
30.1.2011 18:26 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Ano já vím, ale tady není problém s modelem, ten funguje korektně, tady jde o tabulku, která si pamatuje počet řádků a nechce ho zmenšit, nicméně pokud je počet řádků v novém tableModelu větší, tak je zobrazí všechny. A ta změna tableModelu je proto, protože každý tableModel zobrazuje jiná data, v každém sloupečku jiné dat.typy a podobně, takže to v podstatě ani jinak nejde.
30.1.2011 18:44 moira | skóre: 30 | blog: nesmysly
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Co ještě zkusit tu předchozí navrhovanou variantu? Tj. mít pro každý model vlastní JTable a pak je jen prohazovat přes setVisible?
Překladač ti nikdy neřekne: "budeme kamarádi"
Řešení 1× (ZAH)
30.1.2011 18:33 ZAH | skóre: 41 | blog: ZAH
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Nějaký bordel s RowSorter ???
30.1.2011 18:42 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Ano, rowSorter opravdu používám, na to se schválně podívám, to mě ještě nanapadlo.
30.1.2011 18:51 Mitch
Rozbalit Rozbalit vše Re: Java - zmena tableModelu za behu
Pane vy jste genius, opravdu to byl ten RowSorter. Po jeho nahrazení novým vše šlape jak hodinky.

Děkuji všem za pomoc a za nakopnutí:-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.