Hi;
Ich möchte das mit Klick auf den JButton "" die ActionPerformed Methode der innerern Klasse ausgeführt wird. Aber anscheinend gibt es Probleme mit der Zeile
Dabei soll der Wert der 4.Spalte der markierten Zeile der JTable als int abgelegt werden, um in dann weiterzubenutzen.
Die Methoden, die danach in der ActionPerformed ausgeführt werden, funktionieren alle.
Hier mal der Quelltext der JTableGui
und das JTableModel
Es muss doch eine Möglichkeit geben, die 4.Spalte der markierten Zeile zurückzugeben.
Schon mal vielen Dank für die Hilfe
Ich möchte das mit Klick auf den JButton "" die ActionPerformed Methode der innerern Klasse ausgeführt wird. Aber anscheinend gibt es Probleme mit der Zeile
Java:
int auswahlVersNr= Integer.parseInt(table.getValueAt(table.getSelectedRow(), 3).toString()));
Die Methoden, die danach in der ActionPerformed ausgeführt werden, funktionieren alle.
Hier mal der Quelltext der JTableGui
Java:
public class PatientListeAusgeben extends ChildFrame implements ConstantInterface {
private static final long serialVersionUID = 1L;
private JTable table;
private JTextField suchText;
private JButton patientoeffnen;
private JComboBox combobox;
private PatAnzeigeTableModel model;
private TableRowSorter<PatAnzeigeTableModel> sorter;
private ActionListener controller;
private int auswahl;
private Stammdaten markierteDaten;
public PatientListeAusgeben(String title) {
super(title);
setSize(460, 300);
model= new PatAnzeigeTableModel(erstellePatient());
table = new JTable(model);
sorter= new TableRowSorter<PatAnzeigeTableModel>();
suchText= new JTextField(25);
patientoeffnen = new JButton("Patient öffnen");
combobox= new JComboBox();
combobox.addItem("Nachname");
combobox.addItem("Geburtsdatum");
combobox.addItem("Versicherungsnummer");
table.setRowSorter(sorter);
sorter.setModel( model );
this.setLayout(new BorderLayout());
JPanel p1 = new JPanel();
this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
this.getContentPane().add(p1, BorderLayout.SOUTH);
p1.setLayout(new GridLayout(1,3));
p1.add(suchText);
p1.add(combobox);
p1.add(patientoeffnen);
controller = new PatListActionListener();
patientoeffnen.addActionListener(controller);
suchText.getDocument().addDocumentListener(
new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
setAuswahl((String)combobox.getSelectedItem());
newFilter(auswahl);
}
public void insertUpdate(DocumentEvent e) {
setAuswahl((String)combobox.getSelectedItem());
newFilter(auswahl);
}
public void removeUpdate(DocumentEvent e) {
setAuswahl((String)combobox.getSelectedItem());
newFilter(auswahl);
}
});
}
public void setAuswahl(String column)
{
if(column.equals("Nachname"))
auswahl=1;
if(column.equals("Geburtsdatum"))
auswahl=2;
if(column.equals("Versicherungsnummer"))
auswahl=3;
}
private void newFilter(int column) {
RowFilter<PatAnzeigeTableModel, Object> rf = null;
try {
rf = RowFilter.regexFilter(suchText.getText(), column);
} catch (java.util.regex.PatternSyntaxException e) {
return;
}
sorter.setRowFilter(rf);
}
/**
* nur als Beispielmethode, dass etwas in der Tabelle steht
*/
public ArrayList<Stammdaten> erstellePatient()
{
Stammdaten st1 = new Stammdaten();
Stammdaten st2 = new Stammdaten();
GregorianCalendar gebtag1 = new GregorianCalendar(1915, 12, 14);
GregorianCalendar gebtag2 = new GregorianCalendar(1970, 10, 20);
st1.setVorname("Hans");
st1.setNachname("Müller");
st1.setGeburtsdatum(gebtag1);
st1.setVersicherungsnummer(12345);
st2.setVorname("Peter");
st2.setNachname("Huber");
st2.setGeburtsdatum(gebtag2);
st2.setVersicherungsnummer(45678);
return Stammdaten.getStammdatenliste();
}
private class PatListActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(patientoeffnen))
{
if(table.getSelectedRowCount() > 0)
{
int auswahlVersNr= Integer.parseInt(table.getValueAt(table.getSelectedRow(), 3).toString());
PatientenVerwalten pv = new PatientenVerwalten();
Stammdaten st = pv.sucheNachVersNr(auswahlVersNr);
Patient p = new Patient("Patient anzeigen");
p.befuelle(st);
}
}
}
}
}
und das JTableModel
Java:
public class PatAnzeigeTableModel extends AbstractTableModel {
private String[] columnNames = {"Vorname",
"Nachname",
"Geburtsdatum",
"Versicherungsnummer"};
private Object[][] data ;
public PatAnzeigeTableModel(ArrayList<Stammdaten> stammdatenliste)
{
data = new Object[stammdatenliste.size()][4];
fuelledata(stammdatenliste);
}
/**
* Füllt das Array für die Daten mit den Patientendaten, die in der
* Tabele angezeigt werden sollen
* @param stammdatenliste Eine ArrayList mit den anzuzeugenden Daten
*/
public void fuelledata(ArrayList<Stammdaten> stammdatenliste)
{
int i =0;
do
{
data[i][0]=stammdatenliste.get(i).getVorname();
data[i][1]=stammdatenliste.get(i).getNachname();
SimpleDateFormat date = new SimpleDateFormat("dd.MM.yyyy");
String geburtstag = "" + (date.format((stammdatenliste.get(i).getGeburtsdatum()).getTime()));
data[i][2]=geburtstag;
data[i][3]=new Integer(stammdatenliste.get(i).getVersicherungsnummer());
i++;
}
while(i<stammdatenliste.size());
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public Object getValueAt(int row, int col) {
return data[row][col];
}
public String getColumnName(int col) {
return columnNames[col];
}
}
Es muss doch eine Möglichkeit geben, die 4.Spalte der markierten Zeile zurückzugeben.
Schon mal vielen Dank für die Hilfe