GUI tabulka refresh – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

GUI tabulka refresh – Java – Fórum – Programujte.comGUI tabulka refresh – Java – Fórum – Programujte.com

 

mat
~ Anonymní uživatel
8 příspěvků
9. 10. 2012   #1
-
0
-

Zdravím,

potřebuju ze sql vycucat vždy dva sloupce a udělat gui tabulku, první řádek (hlavička tabulky) si udělám ručně, pak už jen potřebuju znovu načítat tabulku...

    public void refreshTable() throws SQLException {
            Statement stat;
            stat = con.createStatement();
            
            try (ResultSet res = stat.executeQuery("select czss,op from filmy where sekce=\""+list.getSelectedValue().toString()+"\"")) {
                while(res.next()){
                   
                    tabModel.addRow(new Object[]{res.getString("czss"), res.getString("op")});         
                }
            }     
    } 
table = new javax.swing.JTable(tabModel);

table.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
        {"0000", "aa"},
        {"0001", "bb"},
        {"0002", "cc"},
        {"0003", "dd"},
        {"0004", "ee"}
    },
    new String [] {
        "Číslo filmu", "Název filmu"
    }
) {
    Class[] types = new Class [] {
        java.lang.String.class, java.lang.String.class
    };

    public Class getColumnClass(int columnIndex) {
        return types [columnIndex];
    }
});

table.setColumnSelectionAllowed(true);



table.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        clickT(evt);
    }
});

jScrollPane2.setViewportView(table);

table.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);



Ale když zavolám fci na refresh tabulky v logu mi to vyflusne 

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at org.smlouvy.gui.Main.refreshTable(Main.java:472)
	at org.smlouvy.gui.Main.jButton2ActionPerformed(Main.java:391)
	at org.smlouvy.gui.Main.access$200(Main.java:22)
	at org.smlouvy.gui.Main$5.actionPerformed(Main.java:274)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:682)
	at java.awt.EventQueue$3.run(EventQueue.java:680)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:696)
	at java.awt.EventQueue$4.run(EventQueue.java:694)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

a nic se nestane

Nahlásit jako SPAM
IP: 93.99.138.–
Dano
~ Anonymní uživatel
101 příspěvků
9. 10. 2012   #2
-
0
-

Pricina je zrejma z riadku v logu 'org.smlouvy.gui.Main.refreshTable(Main.java:472)', co znamena ze na riadku 472, v triede Main, metode refreshTable() volas nad null nejaku funkcionalitu.

Nahlásit jako SPAM
IP: 195.28.127.–
mat
~ Anonymní uživatel
8 příspěvků
9. 10. 2012   #3
-
0
-

472 je try (ResultSet res = stat.executeQuery("select czss,op from filmy where sekce=\""+list.getSelectedValue().toString()+"\""))

Nahlásit jako SPAM
IP: 93.99.138.–
Dano
~ Anonymní uživatel
101 příspěvků
9. 10. 2012   #4
-
0
-

#3 mat
Takze bud 'list', alebo 'list.getSelectedValue()' Ti vrati null   . Ak mozes spusti si app v debugu a daj si na tento riadok break a zistis, co je null, alebo pouzi trochu defenzive  

public void refreshTable() throws SQLException {
    Statement stat;
    stat = con.createStatement();

    if (list == null) {
        System.err.println("list je null");
    } else if (list.getSelectedValue() == null) {
        System.err.println("list.getSelectedValue() je null");
    } else {
        try {
            ResultSet res = stat.executeQuery("select czss,op from filmy where sekce=\"" + list.getSelectedValue().toString() + "\"")
            while (res.next()) {

                tabModel.addRow(new Object[]{res.getString("czss"), res.getString("op")});
            }
        }
    }
}
Nahlásit jako SPAM
IP: 195.28.127.–
sleepy0
Stálý člen
9. 10. 2012   #5
-
0
-

chyba bude zrejme tu:

while (res.next()) {
	tabModel.addRow(new Object[]{res.getString("czss"), res.getString("op")});
}

skus to prerobit na:

while(res.next()) {
	Object[] obj = {res.getString("czss"), res.getString("op")};
	tabModel.addRow(obj);
}
Nahlásit jako SPAM
IP: 158.195.195.–
sleepy0
Stálý člen
9. 10. 2012   #6
-
0
-

#5 sleepy
tak potom to vsetko meni try sa pouziva iba z catch alebo finallize. Cize toto je nejaky sql query tak to urob takto:

try{
	ResultSet res = stat.executeQuery("select czss,op from filmy where sekce=\""+list.getSelectedValue().toString()+"\"");
while(res.hext()){
	// a to co som ti napisal vyssie.
}
}
catch(/*nejaky sql exception*/ s){
	// co sa ma stat ak sa nepripoji k databaze resp. sa vyskitne chyba
}

pozri si aky exception ti hadze to sql.

Nahlásit jako SPAM
IP: 158.195.195.–
mat
~ Anonymní uživatel
8 příspěvků
9. 10. 2012   #7
-
0
-

Tak chyba byla v list.getSelectedValue().toString(), vracela null kdyz nebylo nic vybrano, uz je to osetrene, ale do tabulky se mi stale nepridaji radky.. pritom v db sou udaje spravne...

Nahlásit jako SPAM
IP: 93.99.138.–
Dano
~ Anonymní uživatel
101 příspěvků
Nahlásit jako SPAM
IP: 195.28.127.–
mat
~ Anonymní uživatel
8 příspěvků
10. 10. 2012   #9
-
0
-

Dano: moc mi nepomohlo.... udajne v Object[] obj = {res.getString("czss"), res.getString("op")}; je zase naka prazdna promenna, ale ty res. to nejsou

Nahlásit jako SPAM
IP: 93.99.138.–
Dano
~ Anonymní uživatel
101 příspěvků
10. 10. 2012   #10
-
0
-

Tak potom Ti uz zostal iba debuging. Tazko radit, ked nevidim kod, ani stacktrace, ak bola nejake exception.

Nahlásit jako SPAM
IP: 195.28.127.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

REFRESH V FF — založil leon

FF - refresh — založil bbtrash

Refresh v iframe — založil nerew

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý