L
Lupus93
Gast
Hallo wertes Forum
Ich plage mich schon seit einer Weile mit einem Problem rum und hoffe,
hier Hilfe zu finden.
Ich habe einen Testfall nachgeschrieben, in dem das Problem identisch wie im Hauptprogramm auftritt,
weshalb ich diesen hier poste. Der Unterschied besteht dann lediglich in den Daten, die im Hauptprogramm
aus einer Datenbank kommen.
Die Fehlerbeschreibung:
Man wählt A aus und bestätigt den Button, es wird die Tabelle a angezeigt.
Man wählt darauf hin B aus und bestätigt wieder den Button, Tabelle b wird angezeigt.
Klickt man jetzt in die Tabelle (Daten oder Head), wird auf einmal wieder Tabelle a angezeigt?!
Vielen Dank schonmal für eure Hilfe!
Code:
Ich plage mich schon seit einer Weile mit einem Problem rum und hoffe,
hier Hilfe zu finden.
Ich habe einen Testfall nachgeschrieben, in dem das Problem identisch wie im Hauptprogramm auftritt,
weshalb ich diesen hier poste. Der Unterschied besteht dann lediglich in den Daten, die im Hauptprogramm
aus einer Datenbank kommen.
Die Fehlerbeschreibung:
Man wählt A aus und bestätigt den Button, es wird die Tabelle a angezeigt.
Man wählt darauf hin B aus und bestätigt wieder den Button, Tabelle b wird angezeigt.
Klickt man jetzt in die Tabelle (Daten oder Head), wird auf einmal wieder Tabelle a angezeigt?!
Vielen Dank schonmal für eure Hilfe!
Code:
Java:
package fehler;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Table_Combo {
static void addComponent(Container cont, GridBagLayout gbl, Component c,
int x, int y, int width, int height, double weightx,
double weighty, Insets insets)
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.weightx = weightx;
gbc.weighty = weighty;
gbc.insets = insets; // oben,links,unten,rechts
gbl.setConstraints(c, gbc);
cont.add(c);
}
public static void main(String[] args) {
JFrame testframe = new JFrame();
testframe.setSize(300, 300);
testframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final Container c = testframe.getContentPane();
final GridBagLayout gbl = new GridBagLayout();
c.setLayout(gbl);
final JComboBox test_box = new JComboBox();
String[] inhalt = { "a", "b" };
for (String s : inhalt)
test_box.addItem(s);
final JButton test_button = new JButton("Anzeigen");
addComponent(c, gbl, test_box, 0, 0, 1, 1, 0, 0, new Insets(0, 0, 0, 0));
addComponent(c, gbl, test_button, 1, 0, 1, 1, 0, 0, new Insets(0, 0, 0,
0));
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(test_button)) {
int index = test_box.getSelectedIndex();
// hier beginnt das Problem:
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
JScrollPane pane = new JScrollPane(table);
addComponent(c, gbl, pane, 0, 1, 2, 1, 1.0, 1.0,
new Insets(0, 0, 0, 0));
if (index == 0) {
String[] head = { "Kopf_a", "Kopf_a" };
String[][] inhalt = { { "Inhalt_a", "Inhalt_a" },
{ "Inhalt_a", "Inhalt_a" } };
model.setDataVector(inhalt, head);
model.fireTableDataChanged();
// diesen Weg bin ich vorher gegangen, der jetzige
// sollte besser sein:
// table = new JTable(inhalt, head);
// pane= new JScrollPane(table);
c.validate();
}
if (index == 1) {
String[] head2 = { "Kopf_b", "Kopf_b" };
String[][] inhalt2 = { { "Inhalt_b", "Inhalt_b" },
{ "Inhalt_b", "Inhalt_b" } };
model.setDataVector(inhalt2, head2);
model.fireTableDataChanged();
c.validate();
}
}
}
};
test_button.addActionListener(al);
testframe.setVisible(true);
}
}