你的AbstractTableModel有问题...我想指定setValueAt,我有一个LocalDate和一个布尔情况,但我不知道如何在setValueAt方法中指定...任何建议?
AbstractTableModel代码:
package de.hsbhv.mediapartner.app.model;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import de.hsbhv.mediapartner.app.data.Bestellungen;
public class BestellungTModel extends AbstractTableModel{
private ArrayList<Bestellungen> bliste = Bestellungen.getBestellListe();
String [] columnNames = { "Bestellnummer",
"Kundennummer",
"Name",
"Artikel",
"Bestelldatum",
"Summe",
"Status"};
public int getRowCount() {
// TODO Auto-generated method stub
return Bestellungen.getBestellListe().size();
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return this.columnNames.length;
}
@Override
public String getColumnName(int col) {
return this.columnNames[col];
}
@Override
public Object getValueAt(int row, int col) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
switch(col) {
case 0 : return bliste.get(row).getBestellnummer();
case 1 : return bliste.get(row).getKundennummer();
case 2 : return bliste.get(row).getName();
case 3 : return bliste.get(row).getArtikel();
case 4 : return bliste.get(row).getBestelldatum().format(formatter);
case 5 : return bliste.get(row).getSumme();
case 6 : if (bliste.get(row).isStorniert()) return "Storniert";else return "Freigegeben";
}
return null;
}
@Override
public void setValueAt(Object aValue, int row, int col) {
Bestellungen bestellungen = bliste.get(row);
switch (col) {
case 0 : bestellungen.setBestellnummer(aValue.toString());
case 1 : bestellungen.setKundennummer(aValue.toString());
case 2 : bestellungen.setName(aValue.toString());
case 3 : bestellungen.setArtikel(aValue.toString());
case 4 : bestellungen.setBestelldatum(LocalDate);
case 5 : bestellungen.setSumme(aValue.toString());
case 6 : bestellungen.setStorniert(boolean);
}
fireTableCellUpdated(row, col);
}
public void entfernen(int selectedRow) {
bliste.remove(selectedRow);
}
}
在案例4和案例6中,我有&#34; LocalDate&#34;和&#34;布尔&#34;只因为我不知道更好,我知道它不起作用;)
这是表格所在的小组:
package de.hsbhv.mediapartner.app.ui;
import java.awt.Color;
import java.awt.Font;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import de.hsbhv.mediapartner.app.data.Bestellungen;
import de.hsbhv.mediapartner.app.model.BestellungTModel;
public class BestellungenPanel extends JPanel {
private StartPanel hf;
private final StartPanel frame;
private JTable tblBestellung;
private BestellungTModel tmBestellung;
public BestellungenPanel(StartPanel parent) {
frame = parent;
setLayout(null);
hf = frame;
JLabel lblMediapartner = new JLabel("MediaPartner");
lblMediapartner.setForeground(Color.BLUE);
lblMediapartner.setFont(new Font("Roboto", Font.BOLD, 16));
lblMediapartner.setBounds(12, 13, 157, 16);
add(lblMediapartner);
JSeparator separator = new JSeparator();
separator.setBounds(118, 22, 465, 2);
add(separator);
JLabel lblBestellungen = new JLabel("Bestellungen");
lblBestellungen.setFont(new Font("Roboto", Font.BOLD, 16));
lblBestellungen.setForeground(Color.BLUE);
lblBestellungen.setBounds(591, 13, 97, 17);
add(lblBestellungen);
JLabel lblStatus = new JLabel(" ");
lblStatus.setBounds(239, 243, 56, 16);
lblStatus.setVisible(false);
add(lblStatus);
/*Bedienelemente*/
JScrollPane spArtikel = new JScrollPane();
spArtikel.setBounds(12, 37, 676, 222);
add(spArtikel);
tmBestellung = new BestellungTModel();
tblBestellung = new JTable(tmBestellung);
spArtikel.setViewportView(tblBestellung);
JButton btnstornieren = new JButton("Stornieren");
btnstornieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btnstornieren.setFont(new Font("Roboto", Font.PLAIN, 13));
btnstornieren.setBounds(243, 272, 216, 25);
add(btnstornieren);
JButton btnZurck = new JButton("zur\u00FCck");
btnZurck.setFont(new Font("Roboto", Font.PLAIN, 13));
btnZurck.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hf.getCl().show(hf.getCardPanel(), "Admin");
}
});
btnZurck.setBounds(12, 272, 216, 25);
add(btnZurck);
JButton btnfreigeben = new JButton("Freigeben");
btnfreigeben.setFont(new Font("Roboto", Font.PLAIN, 13));
btnfreigeben.setBounds(472, 272, 216, 25);
add(btnfreigeben);
}
}
最后我只想用一个按钮将布尔情况(来自AbstractTableModel的情况6)更改为true或false。