Bom dia Gente, como faço para capturar os numeros de vários JSpinner dentro de uma tabela… segue a foto do que estou falando, todos esse JSpinner que aparece na imagem eu queria captura os vcalores deles
Capturar numeros de um Jspinner
15 Respostas
Alguem?
Primeiro percorra as linhas da sua JTable recupera o JSpinner na 4 coluna depois de um getValue() no seu JSpinner.
DefaultTableModel tableModel = (DefaultTableModel) tabela.getModel();
int total = tableModel .getRowCount();
for (int x=0; x<total; x++) {
JSpinner spin = (JSpinner ) tableModel.getValueAt(x, 3);
int valor = (Integer) spin.getValue();
}
>
Beleza eu testei isso, coloquei no botao salvar esse comando que voce passou so que na hora de pegar o Spinner ele da o seguinte erro…
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to javax.swing.JSpinner
at apontamento.JFCadastraRota.btnSalvarActionPerformed(JFCadastraRota.java:328)
So que eu uso uma classe que cria esse Jspinner, eu não usei o do netbeans,
Posta o código onde você adiciona o JSpinner a sua JTable.
Seria isso?
ListaRotaTModel tableModel = (ListaRotaTModel ) jTable1.getModel();
int total = tableModel.getRowCount();
for (int x=0; x<total; x++) {
PadraoGridView spin = (PadraoGridView ) tableModel.getValueAt(x, 3);
int valor = (Integer) spin.getCellEditorValue();
}
Essa e a minha classe que cria o Jspinner dentro da Jtable…
public class PadraoGridView extends DefaultTableCellRenderer implements TableCellEditor {
JSpinner spinner = new JSpinner();
private double valoranterior;
@Override
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) {
// component will actually be this.
Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
component.setBackground(row%2==0 ? Color.getHSBColor(125,255,145) : Color.LIGHT_GRAY);
//JSpinner spinner = new JSpinner();
TableColumn col1 = table.getColumnModel().getColumn(3);
//TableColumn col = table.getColumnModel();
TableColumnModel col = table.getColumnModel();
col.getColumn(0).setPreferredWidth(200);
col.getColumn(1).setPreferredWidth(300);
col.getColumn(2).setPreferredWidth(30);
col.getColumn(3).setPreferredWidth(50);
col1.setCellEditor(new PadraoGridView());
if(column == 3){
table.setRowHeight(30);
//table.setEditingRow(row);
//if (component instanceof JLabel) {
//spinner.setValue(Integer.valueOf(((JLabel) component).getText()));
//TableColumn column = table.getColumnModel().getColumn(1);
//} else if (value != null) {
//spinner.setValue(Integer.valueOf(value.toString()));
//} else {
//System.out.println("Não foi possivel criar Renderer");
//}
// spinner.setEditor(spinner);
spinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1)));
return spinner;
} else {
return component;
}
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
spinner.setValue(value);
return spinner;
}
@Override
public Object getCellEditorValue() {
return spinner.getValue();
}
@Override
public boolean isCellEditable(EventObject anEvent) {
Object evt = null;
if (evt instanceof MouseEvent) {
return ((MouseEvent) evt).getClickCount() >= 2;
}
return true;
}
@Override
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
@Override
public boolean stopCellEditing() {
return true;
}
@Override
public void cancelCellEditing() {
}
@Override
public void addCellEditorListener(CellEditorListener l) {
listenerList.add(CellEditorListener.class, l);
}
@Override
public void removeCellEditorListener(CellEditorListener l) {
listenerList.remove(CellEditorListener.class, l);
}
}
Entendeu??
?
Tenta imprimir o que ta vindo na String…
Como assim imprimir o que vem na String?
Na imagem que eu mandei no campo da tabela chamado Seq.Entrega eu irei definir qual cliente vai ser entregue a mercadoria primeiro certo?, ai nessa mesma imagem eu tenho um botao salvar que eu penso em que, quando o operador realizar a consulta eu ja irei ter uma lista carregada com as informações como cod_cliente, nome_cliente, peso_do_produto… Com essas informações o operador vai definir qual cliente vai ser entregue a mercadoria, ele definindo eu so vou fazer um for para adicionar a esta lista a sequencia de entrega definida neste Jspinner,so que quando eu clico no botao salvar com esse metodo que voce me passou da este erro.
private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ListaRotaTModel tableModel = (ListaRotaTModel ) jTable1.getModel();
int total = tableModel.getRowCount();
for (int x=0; x<total; x++) {
PadraoGridView spin = (PadraoGridView) tableModel.getValueAt(x, 3);
//JSpinner spin = (JSpinner) tableModel.getValueAt(x, 3);
System.out.println("Problema ->"+spin.getCellEditorValue());
int valor = (Integer) spin.getCellEditorValue();
}
Este acima e o botao salvar e este a baixo e o erro que acontece…
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to apontamento.utils.PadraoGridView
at apontamento.JFCadastraRota.btnSalvarActionPerformed(JFCadastraRota.java:328)
at apontamento.JFCadastraRota.access$300(JFCadastraRota.java:20)
at apontamento.JFCadastraRota$4.actionPerformed(JFCadastraRota.java:149)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
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)
Faz a troca
PadraoGridView spin = (PadraoGridView) tableModel.getValueAt(x, 3);
Por
System.out.println(tableModel.getValueAt(x, 3));
Acredito que o seu tableModel.getValueAt(x, 3) já esta vindo o valor do seu JSpinner.
Está vindo 0
Porque será que está retornando 0?
Alguem?
O meu problema é o seguinte, quando eu mudo o valor do meu jspinner eu não sei aonde ele armazena esse valor, pois eu tenho que jogar esse valor em uma beans que possui uma variavel que guarda ele…
