Je rencontre des difficultés pour ajouter des lignes à une table située dans une classe différente.relations entre les classes
Suite sont la structure classes:
La flèche en pointillés est la relation souhaitée que je nai réussi à avoir
dans la classe AddPanel
J'ai fileds et addButton. Lorsque vous cliquez sur le bouton addButton, je crée d'abord une instance de Product (classe située dans Logic Package) lorsque vous cliquez sur le bouton addButton.
Ensuite, j'ai besoin d'ajouter une ligne à la table (en utilisant la méthode TableModel.AddRow
).
Après sont les GUI (Looks l'onglet ciblé est AddPannel
):
j'ai essayé différentes approaches mais non d'entre eux ont été successed.
Ma dernière tentative était de créer dans la classe Table
la méthode suivante:
public void AddRow(Product p) {
tbmStock.addRow(new Object[] { p.getExternalId(), p.getName(),
p.getAmount(), p.getPriceForMe(), p.getPriceForCustomer() });
}
En outre, dans la AddPanel
classe I essayé d'ajouter la méthode suivante:
private void AddButtonAction() {
btnAddProduct.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Product p = new Product(txtName.getText(), txtExternalID
.getText(), Integer.parseInt(txtAmount.getText()),
Double.parseDouble(txtPriceForMe.getText()),
Double.parseDouble(txtPriceForCustomer.getText()),
Integer.parseInt(txtFromYear.getText()), Integer
.parseInt(txtToYear.getText()), Integer
.parseInt(txtSupplier.getText()), Integer
.parseInt(txtCarType.getText()));
AddRow(p); //This call doesn't compiles
}
catch (Exception e1){
JOptionPane.showMessageDialog(null,"Error");
}
}
});
}
Toutes les suggestions? (en fait je ne suis pas sûr que même ma structure soit bonne: S)
Vous pouvez simplement ajouter une référence du modèle de table à la AddPanel – MadProgrammer
fait " Cela ne fonctionne pas "signifie qu'il ne compile pas en raison de ce qui suit:' La méthode AddRow (Product) est undefin ed pour le nouveau type ActionListener() {} ' –
@Gil Peretz dans ce cas MadProgrammer est pour la plupart correct, vous avez besoin d'une référence à votre table dans' AddPanel' et ensuite appelez 'table.AddRow()' dans votre 'ActionListener'. Encore je recommande de créer un 'TableModel' personnalisé qui est capable de gérer une collection de' Product'. – annih