Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
out of bound exception, filtering jTable

Registrovaný: 04.03.08
Prihlásený: 12.03.15
Príspevky: 68
Témy: 27
Príspevok NapísalOffline : 07.05.2014 23:19

Ahojte , mam taký problém, neviem s tým pohnuť . mam 3 table kt. su potomkami abstracttablemodel
v nich sa udaje ukladaju do arraylistu

cez combobox ich prepinam a tym sa mi meni obsah tabulky jTable.
vsetko funguje ale ked si pridam jTextField a pridam mu funkciu na filtrovanie jTable , vypise toto

Kód:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
   at java.util.ArrayList.rangeCheck(ArrayList.java:604)
   at java.util.ArrayList.get(ArrayList.java:382)
   at semestralka2.MojTableModel.getValueAt(MojTableModel.java:35)
   at javax.swing.JTable.getValueAt(JTable.java:2716)
   at javax.swing.JTable.prepareRenderer(JTable.java:5714)
   at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
   at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
   at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
   at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
   at javax.swing.JComponent.paintComponent(JComponent.java:778)
   at javax.swing.JComponent.paint(JComponent.java:1054)
   at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
   at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1508)
   at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1439)
   at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
   at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
   at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
   at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
   at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
   at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1647)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)




toto je MojTable Model

Kód:
package semestralka2;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author dusan
 */
public class MojTableModel extends AbstractTableModel {

    private String Stlpce[] = {"Meno", "Priezvisko", "Email", "Rodné číslo", "Adresa", "Psč", "Mesto", "Tel.č. účastník", "Tel.č. rodič", "Poznámka"};
    private ArrayList<Ucastnik> uc = new DataUcastnikov().dajUcastnikovURL();

   

    @Override
    public int getRowCount() {
        return uc.size();
    }

    @Override
    public int getColumnCount() {
        return Stlpce.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {

       
        Ucastnik u = uc.get(rowIndex);

        switch (columnIndex) {
            case 0:
                return u.getMeno();
            case 1:
                return u.getPriezvisko();
            case 2:
                return u.getEmail();
            case 3:
                return u.getRc();
            case 4:
                return u.getAdresa();
            case 5:
                return u.getPsc();
            case 6:
                return u.getMesto();
            case 7:
                return u.getTcuc();
            case 8:
                return u.getTcrod();
            case 9:
                return u.getPoznamka();
       
            default:
                throw new UnsupportedOperationException("not");
        }
    }

    @Override public String getColumnName(int col) {
        return Stlpce[col];
    }

 
   
    public void addUcastnik(Ucastnik u){
   
       
    uc.add(u);
    fireTableDataChanged();
   
   
   
    }
   
}


toto je Okno GUI

Kód:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package semestralka2;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.RowFilter;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

/**
 *
 * @author dusan
 */
public class Okno extends javax.swing.JFrame {

    /**
     * Creates new form Okno
     */
         

    public Okno() {
        initComponents();
           
        jTable1.setModel(new MojTableModel());
        jTable1.getColumnModel().getColumn(0).setPreferredWidth(45);
        jTable1.getColumnModel().getColumn(1).setPreferredWidth(45);
        jTable1.getColumnModel().getColumn(2).setPreferredWidth(120);
       
//         final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(jTable1.getModel());
//        jTable1.setRowSorter(sorter);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jComboBox1 = new javax.swing.JComboBox();
        jTextField1 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Účastníci KECY 2014");

        jPanel1.setBackground(new java.awt.Color(29, 150, 229));

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jTable1.setSurrendersFocusOnKeystroke(true);
        jScrollPane1.setViewportView(jTable1);

        jButton1.setText("Pridaj účastníka");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton3.setText("Export do excelu");

        jButton2.setText("Vymaž účastníka");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Web", "Súbor", "Web + súbor" }));
        jComboBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox1ActionPerformed(evt);
            }
        });

        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/semestralka2/a.png"))); // NOI18N

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(85, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jButton1)
                        .addGap(18, 18, 18)
                        .addComponent(jButton2)
                        .addGap(18, 18, 18)
                        .addComponent(jButton3))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 1114, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(59, 59, 59))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(106, 106, 106)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(33, 33, 33)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton1)
                        .addComponent(jButton2)
                        .addComponent(jButton3))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(2, 2, 2)
                        .addComponent(jLabel1))
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(48, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        jPanel1.getAccessibleContext().setAccessibleName("");

        pack();
    }// </editor-fold>                       

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
       
        if (jComboBox1.getSelectedItem().equals("Web")) {
         
            jTable1.setModel(new MojTableModel());
           
            jTable1.getColumnModel().getColumn(0).setPreferredWidth(45);
            jTable1.getColumnModel().getColumn(1).setPreferredWidth(45);
            jTable1.getColumnModel().getColumn(2).setPreferredWidth(120);
           
           
             
        }

        if (jComboBox1.getSelectedItem().equals("Súbor")) {
           
            jTable1.setModel(new MojTableModel2());
            jTable1.getColumnModel().getColumn(0).setPreferredWidth(45);
            jTable1.getColumnModel().getColumn(1).setPreferredWidth(45);
            jTable1.getColumnModel().getColumn(2).setPreferredWidth(120);
   
        }

        if (jComboBox1.getSelectedItem().equals("Web + súbor")) {
           
            jTable1.setModel(new MojTableModel3());
            jTable1.getColumnModel().getColumn(0).setPreferredWidth(45);
            jTable1.getColumnModel().getColumn(1).setPreferredWidth(45);
            jTable1.getColumnModel().getColumn(2).setPreferredWidth(120);
         
        }

    }                                         

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        PridajFrame a = new PridajFrame();
        a.setVisible(true);
        a.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    }                                       

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        if(!jComboBox1.getSelectedItem().equals("Súbor")) {
            jComboBox1.setSelectedItem("Súbor");
        }

        Metody m = new Metody();
        if (jTable1.getSelectedRow() == -1) {
            JOptionPane.showMessageDialog(null, "Oznac v tabuľke, koho chceš vymazať");
        } else {
            int request = JOptionPane.showConfirmDialog(null, "Naozaj chceš vymazať účastníka?", "b", JOptionPane.YES_NO_OPTION);
            if (request == JOptionPane.YES_OPTION) {
                try {
                    m.vymazUcastnika(jTable1.getSelectedRow());
                    jTable1.setModel(new MojTableModel2());
                } catch (IOException ex) {
                    Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }                                       

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
 
               
               
             
           
               TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>( jTable1.getModel());
        jTable1.setRowSorter(sorter);
       
        String text = jTextField1.getText();
                if (text.length() == 0) {
                  sorter.setRowFilter(null);
                } else {
                    sorter.setRowFilter(RowFilter.regexFilter("(?i)" +text));
                }
           
           
           
           
       
     
               
               
               
    }                                           

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Okno().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
}


Offline

Užívateľ
Užívateľ
out of bound exception, filtering jTable

Registrovaný: 15.01.07
Prihlásený: 23.09.15
Príspevky: 186
Témy: 3
Bydlisko: ZV/BA
Príspevok NapísalOffline : 08.05.2014 2:33

myslim, ze excp ti to naznacil jasne, tam kde volas to getValueAt s rowIndex pchas do argumentu get z arraylistu 5 a arraylist ma 5 poloziek, takze posledny index je 4 a nie 5tka (ako keby si tam mal niekde +1 co by niekde nemal byt), si si isty tou inicializaciou toho listu (new DataUcastnikov().dajUcastnikovURL();)?

oh a urcite by som to dal do konstruktora radsej ako toto divne deklarovanie explicitne, dajak takto:

Kód:
private String Stlpce[];
private ArrayList<Ucastnik> uc;

public MojTableModel() {
  Stlpce[] = {"Meno", "Priezvisko", "Email", "Rodné číslo", "Adresa", "Psč", "Mesto", "Tel.č. účastník", "Tel.č. rodič", "Poznámka"};
  uc = new DataUcastnikov().dajUcastnikovURL();
}


hmm a pre tu srandu, :D, skus mozno dat:
Kód:
Ucastnik u = uc.get(rowIndex-1);







_________________
nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot
" 1000.times { puts "I will not spam on the boards" } "
Odpovedať na tému [ Príspevkov: 2 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. HDTV Kabel Pb out Pr out Y out

v Ostatné

9

1420

15.10.2010 17:47

armin.owen Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kde najdem redukciu HDTV-out na TV-out.....

v nVidia grafické karty

18

1848

12.02.2007 11:01

Predator8284 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. java - JButton v JTable (ASAP)

v Assembler, C, C++, Pascal, Java

0

540

05.12.2009 12:27

tlacitko Enter Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. anisotropic filtering

v ATI/AMD grafické karty

3

1007

30.04.2011 21:40

incognito Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Call of Juarez Bound in Blood

v Počítačové hry

29

1706

11.07.2009 15:10

AsuSmaNiaK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Iptables firewall + mac filtering

v Bezpečnosť a firewally

0

872

02.09.2008 13:47

Roko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# stack overflow exception

v Technológia .NET

2

522

22.08.2015 22:53

p4tooo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. c++ main return exception

v Assembler, C, C++, Pascal, Java

4

403

12.07.2012 12:43

HT Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Call of Juarez Bound in Blood Crash

v Počítačové hry

3

464

19.11.2011 18:56

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. error handling - trigger_error vs throw Exception

v PHP, ASP

3

568

19.04.2011 15:31

ThePlaky Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vaše pripojenie nie je súkromné / This site is blocked due to content filtering.

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Sieťové a internetové programy

30

2141

07.10.2017 21:31

Adia48 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. TV-out

v ATI/AMD grafické karty

12

996

07.05.2009 12:18

Daron Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. subor .OUT???

v Video programy

3

2905

02.09.2006 7:14

hawo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Digital OUT

v Zvuk

4

411

29.08.2013 18:34

KocuR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. TV OUT

v TV

5

1225

28.06.2006 10:57

Luks Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. FLat out 2

v Počítačové hry

1

506

14.03.2010 13:43

eXistenZ Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra