[quote=brlima]Alias, acho melhor vc usar no seu codigo
rs.remove(it);
no lugar de
Talvez possa ser isso…
flw![/quote]
Nada ocorre, lima!
Quanto ao seu código, vejo que já se sabe quais linhas se quer remover. O problema é que devem ser removidas linhas com alguma característica, como por exemplo, “todas as linhas onde o elemento da 1ª coluna é 10”… creio que a JTable deve ser varrida em busca de tais linhas. E por isso usei o Iterator, o qual está dando este pequeno erro chato!
Quanto ao código do daniel_destro: funciona, A MENOS QUE A LINHA A SER REMOVIDA SEJA A PENÚLTIMA!!
Além do mais…
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
at java.util.AbstractList$Itr.next(AbstractList.java:420)
at gui.my.NewJFrame.removeButtonActionPerformed(NewJFrame.java:103)
at gui.my.NewJFrame.access$100(NewJFrame.java:17)
at gui.my.NewJFrame$2.actionPerformed(NewJFrame.java:71)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Esta exceção é disparada.
O código que estou usando é o abaixo.
// NewJFrame.java
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
/**
*
* @author Antonioni de Araújo Rocha
*/
public class NewJFrame extends javax.swing.JFrame {
private DefaultTableModel dtm;
private Vector columnIdentifiers;
private Vector dataVector;
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
columnIdentifiers = new Vector(1, 1);
columnIdentifiers.add("coluna1");
columnIdentifiers.add("coluna2");
columnIdentifiers.add("coluna3");
dataVector = new Vector(1, 1);
dtm = new DefaultTableModel(dataVector, columnIdentifiers);
table.setModel(dtm);
}
/** 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.
*/
private void initComponents() {
buttonPanel = new javax.swing.JPanel();
addButton = new javax.swing.JButton();
removeButton = new javax.swing.JButton();
tablePanel = new javax.swing.JPanel();
dtmTablePanel = new javax.swing.JPanel();
dtmScrollPane = new javax.swing.JScrollPane();
table = new javax.swing.JTable();
table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
table.getTableHeader().setReorderingAllowed(false);
getContentPane().setLayout(new java.awt.BorderLayout(0, 10));
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
buttonPanel.setLayout(new java.awt.GridLayout(1, 4, 5, 0));
buttonPanel.setPreferredSize(new java.awt.Dimension(50, 50));
addButton.setText("Add");
addButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addButtonActionPerformed(evt);
}
});
buttonPanel.add(addButton);
removeButton.setText("Remove");
removeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeButtonActionPerformed(evt);
}
});
buttonPanel.add(removeButton);
getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH);
tablePanel.setLayout(new java.awt.GridLayout(1, 1, 0, 5));
dtmTablePanel.setLayout(new java.awt.GridLayout(1, 1));
dtmTablePanel.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
dtmScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
dtmScrollPane.setViewportView(table);
dtmTablePanel.add(dtmScrollPane);
tablePanel.add(dtmTablePanel);
getContentPane().add(tablePanel, java.awt.BorderLayout.CENTER);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-500)/2, (screenSize.height-200)/2, 500, 200);
}
private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Vector rs = dtm.getDataVector();
java.util.Iterator it = rs.iterator();
for(int i=0; it.hasNext(); i++) {
Vector r = (Vector) it.next();
if(r.elementAt(0).equals(10)) {
dtm.removeRow(i);
}
};
dtm.setDataVector(rs, columnIdentifiers);
}
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Vector row = new Vector(1, 1);
row.add(table.getRowCount());
row.add(table.getRowCount());
row.add(table.getRowCount());
dataVector.add(row);
dtm.setDataVector(dataVector, columnIdentifiers);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton addButton;
private javax.swing.JPanel buttonPanel;
private javax.swing.JScrollPane dtmScrollPane;
private javax.swing.JPanel dtmTablePanel;
private javax.swing.JButton removeButton;
private javax.swing.JTable table;
private javax.swing.JPanel tablePanel;
// End of variables declaration
}
Ô troço complicado!