aqui está o arquivo caso queira dar uma olhada.
O Diego ta me ajudando aqui mas se outra pessoa souber a resposta e puder dar uma força agradeço.
Tem muitos problemas, estão sinalizados com "// <<--"
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
/**
*
@author Engenharia03
*/
public class ajustes extends javax.swing.JFrame {
DefaultTableModel Jtabela;
/**
Creates new form ajustes
*/
public ajustes() {
initComponents(); // <<-- faltou chamar o método
Jtabela = new DefaultTableModel(new String[] { // <<-- Aspas duplas fora do lugar
"Número da Parcela", // <<-- Aspas duplas fora do lugar
"Data de Vencimento",
"Valor"
}, 0);
Jtabela.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
// A coluna 2 é o índice da coluna do Valor, como ela é a única que altera o total as soma, o if filtra as solicitações para que não fique repetindo desnecessariamente
if (e.getColumn() == 2) {
double soma = 0;
// modeloDaTabela.getRowCount() obtém a qtd de linhas no modelo
for (int i = 0; i < Jtabela.getRowCount(); i++) {
// obtém o valor na linha i coluna 2 onde está o valor, o tableModel usa Objects, é mais fácil converter para String inicialmente
String valor = Jtabela.getValueAt(i, 2).toString();
// Double.parseDouble converte para double
soma = soma + Double.parseDouble(valor);
}
jTtotal.setText("" + soma);
}
}
});
jTabela.setModel(Jtabela); // <<-- faltou trocar o model
}
public void adicionarParcela(int numero, String data, double valor) {
Object[] row = new Object[3];
row[0] = numero; // coluna numero da parcela
row[1] = data; // coluna data de vencimento
row[2] = valor; // valor da parcela
Jtabela.addRow(row); // adiciona a tabela, método exclusivo do DefaultTableModel, caso não seja, troque por um equivalente
}
public void limparModeloDaTabela() {
while (Jtabela.getRowCount() > 0) { // enquanto tiver linhas
Jtabela.removeRow(0); // remove o primeiro
}
} // <<-- Faltou fechar aqui
/**
* 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() {
jScrollPane1 = new javax.swing.JScrollPane();
jTabela = new javax.swing.JTable();
jTtotal = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTabela.setModel(new javax.swing.table.DefaultTableModel(
new Object[][] {
{}, {}, {}, {}
},
new String[] {
}
));
jScrollPane1.setViewportView(jTabela);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(135, 135, 135)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTtotal, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(159, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(49, 49, 49)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTtotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(269, Short.MAX_VALUE))
);
pack();
} // </editor-fold>
/**
* @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(ajustes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ajustes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ajustes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ajustes.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 ajustes().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTabela;
private javax.swing.JTextField jTtotal;
// End of variables declaration
private void adicionarRow(String entrega, int i, int entrada, String entrada0) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
Esse aqui que você postou como modelo faz exatamente o que quero o problema é que ele cria o jpainel a jtable e o textfiel e eu já tenho isso na janela que eu preciso usar. se eu usar ele ele vai abrir outro painel e eu não estou conseguindo direcionar o modelo para os meus ja criados. mas vou bater cabeça esse final de semana pra tentar adaptar ele no meu, agradeço toda ajuda Diego.
É só alterar onde eu marquei. “// <<–”
Funcionou ai com vc?
A janela abriu e os componentes apareceram, não foi possível gerar as parcelas pois falta muito código.
mesmo com a alteração aqui da erro na classe initcomponets e pede pra torna-la public mas na aceita editar nada na classe.
pera agora rodou deixa eu ver se arrumo o código.
Tá dando erro na hora de adicionar as linhas.
Blockquote
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
public class ajustes extends javax.swing.JFrame {
DefaultTableModel Jtabela;
public ajustes() {
initComponents();
Jtabela = new DefaultTableModel(new String[]{"Nome", "Numero", "Valor", "Data"}, 0);
Jtabela.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
if (e.getColumn() == 2) {
double soma = 0;
for (int i = 0; i < Jtabela.getRowCount(); i++) {
// obtém o valor na linha i coluna 2 onde está o valor, o tableModel usa Objects, é mais fácil converter para String inicialmente
String valor = Jtabela.getValueAt(i, 2).toString();
// Double.parseDouble converte para double
soma = soma + Double.parseDouble(valor);
}
jTtotal.setText(""+soma);
}
}
});
MinhaTabela.setModel(Jtabela);
adicionarRow("Entrega", 0, 80, "Entrada");
adicionarRow("Entrega", 1, 80, "14/01/2018");
adicionarRow("Entrega", 2, 80, "14/02/2018");
adicionarRow("Entrega", 3, 80, "14/03/2018");
adicionarRow("Entrega", 4, 80, "14/04/2018");
}
public void adicionarRow(String nome, int numero, double valor, String data) {
Object[] row = new Object[4];
row[0] = nome;
row[1] = numero;
row[2] = valor;
row[3] = data;
Jtabela.addRow(row);
}
public void limparModeloDaTabela() {
while (Jtabela.getRowCount() > 0) { // enquanto tiver linhas
Jtabela.removeRow(0); // remove o primeiro
}
}
Blockquote
esse erro >
Exception in thread “AWT-EventQueue-0” java.lang.UnsupportedOperationException: Not supported yet.
at testword.ajustes.adicionarRow(ajustes.java:159)
at testword.ajustes.(ajustes.java:41)
at testword.ajustes$2.run(ajustes.java:144)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
O que tem na linha 159?
private void adicionarRow(String entrega, int i, int entrada, String entrada0) {
linha 159 >>> throw new UnsupportedOperationException(“Not supported yet.”); //To change body of generated methods, choose Tools | Templates.
}
como sou jumento era isso apenas, funcionou beleza agora.
Muito obrigado pela força Diego agora que rodou na minha janela consigo adaptar pro que preciso.