sarakinos Δημοσ. 13 Σεπτεμβρίου 2012 Δημοσ. 13 Σεπτεμβρίου 2012 Στον παρακάτω κώδικα προσπαθώ να πάρω έναν πίνακα JTable και να τον αποθηκεύσω σε ένα file. Το θέμα μου είναι ότι τρέχει μέχρι και την 3η στήλη του πίνακα , ενώ αυτός έχει 4. > import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; public class windowOptions extends JFrame implements ActionListener { DefaultTableModel model = new DefaultTableModel(); public JTable prosopiko = new JTable(model); public windowOptions(){ //Initialize window setTitle("Options"); setSize(300,300); setVisible(true); //Initialize model for table model.addColumn("Onoma"); model.addColumn("Epitheto"); model.addColumn("Thesi"); model.addColumn("Merokamata"); //Create Swing Components JPanel panelOptions = new JPanel(new FlowLayout()); JButton addB = new JButton("Add"); JButton okB = new JButton("Ok"); JScrollPane scrollPane = new JScrollPane(prosopiko); //Add actionListeners addB.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { model.addRow(new Object[]{"","","",""}); } }); okB.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { try{ FileWriter fstream = new FileWriter("prosopiko.txt"); BufferedWriter out = new BufferedWriter(fstream); TableModel tempModel = prosopiko.getModel(); JOptionPane.showMessageDialog(null, tempModel.getColumnCount()); for(int i=1 ; i<=tempModel.getRowCount() ; i++){ for(int j=1 ; j+1<=tempModel.getColumnCount() ; j++){ out.write(tempModel.getValueAt(i, j).toString()); System.out.print("i:"+i+"\nj:"+j+"\n"); } } out.close(); }catch(Exception e){ } }}); panelOptions.add(scrollPane); panelOptions.add(addB); panelOptions.add(okB); add(panelOptions); pack(); } }
warlock9_0 Δημοσ. 13 Σεπτεμβρίου 2012 Δημοσ. 13 Σεπτεμβρίου 2012 η getrowcount πόσες σου δίνει? εκεί είναι το θέμα, ανάλογα πως μετράει πρέπει να ξεκινήσεις το i από 0 ή 1
karabouzouk... Δημοσ. 13 Σεπτεμβρίου 2012 Δημοσ. 13 Σεπτεμβρίου 2012 Σου διαβάζει μέχρι την τρίτη ή από τη δεύτερη και μέχρι την τέταρτη..?? Στον κώδικα εδώ μπορείς να μου εξηγήσεις γιατί ξεκινάς τα i και j από το 1 και όχι από το 0..? και δεύτερον γιατί στο j έχεις βάλει j+1<tempModel.getColumnCount() ? > for(int i=1 ; i<=tempModel.getRowCount() ; i++){ for(int j=1 ; j+1<=tempModel.getColumnCount() ; j++){ νομίζω το σωστό θα ήταν: > for(int i=0 ; i<tempModel.getRowCount() ; i++){ for(int j=0 ; j<tempModel.getColumnCount() ; j++){ 1
sarakinos Δημοσ. 16 Σεπτεμβρίου 2012 Μέλος Δημοσ. 16 Σεπτεμβρίου 2012 Παιδιά θα σκάσω , έκανα print το exception και μου βγάζει out of bounds error... 2 Μέρες τώρα παιδεύομαι με αυτό... > import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; public class windowOptions extends JFrame implements ActionListener { DefaultTableModel model = new DefaultTableModel(); public JTable prosopiko = new JTable(model); public windowOptions(){ //Initialize window setTitle("Options"); setSize(300,300); setVisible(true); //Initialize model for table model.addColumn("Onoma"); model.addColumn("Epitheto"); model.addColumn("Thesi"); model.addColumn("Merokamata"); //Create Swing Components JPanel panelOptions = new JPanel(new FlowLayout()); JButton addB = new JButton("Add"); JButton okB = new JButton("Ok"); JScrollPane scrollPane = new JScrollPane(prosopiko); //Add actionListeners addB.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { model.addRow(new Object[]{"","","",""}); } }); okB.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { try{ FileWriter fstream = new FileWriter("prosopiko.txt"); BufferedWriter out = new BufferedWriter(fstream); TableModel tempModel = prosopiko.getModel(); int rows = tempModel.getRowCount(); int cols = tempModel.getColumnCount(); prosopiko.setModel(model); for(int i=1 ; i<=rows ; i++){ for(int j=1 ;j<=cols ; j++){ System.out.println(model.getValueAt(i, j)); } } out.close(); }catch(Exception e){ e.printStackTrace(); } }}); panelOptions.add(scrollPane); panelOptions.add(addB); panelOptions.add(okB); add(panelOptions); pack(); } @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub } } Console > 123213123 123123 java.lang.ArrayIndexOutOfBoundsException: 4 >= 4 at java.util.Vector.elementAt(Unknown Source) at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source) at windowOptions$2.actionPerformed(windowOptions.java:86) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
warlock9_0 Δημοσ. 16 Σεπτεμβρίου 2012 Δημοσ. 16 Σεπτεμβρίου 2012 το έκανες αυτό που σου είπα? >for(int i=0 ; i<rows ; i++){ for(int j=0 ;j<cols ; j++){ System.out.println(model.getValueAt(i, j)); η πρώτη στήλη δεν είναι η 1 αλλά η 0
sarakinos Δημοσ. 16 Σεπτεμβρίου 2012 Μέλος Δημοσ. 16 Σεπτεμβρίου 2012 Το ίδιο πράγμα , έχω πρόβλημα ακόμα και αν βάλω σταθερές τιμές στην getValueAt
T3rror1st Δημοσ. 19 Σεπτεμβρίου 2012 Δημοσ. 19 Σεπτεμβρίου 2012 αντικατέστησε τον listener του okB με αυτό okB.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { try{ FileWriter fstream = new FileWriter("prosopiko.txt"); BufferedWriter out = new BufferedWriter(fstream); prosopiko.setModel(model); out.write("onoma \t epitheto \t thesi \t merokamata" ); out.newLine(); for(int i=0 ; i < model.getRowCount() ; i++){ for(int j=0 ;j < model.getColumnCount() ; j++){ System.out.println(model.getValueAt(i, j)); out.write(model.getValueAt(i, j).toString()+"\t"); } out.newLine(); } out.close(); }catch(Exception e){ e.printStackTrace(); } }});
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα