G
Gast
Gast
Hallo
kann man zur Laufzeit Komponenten austauschen?
Ich habe verschiedene Messwerte aus verschiedenen Dateien.
Diese Messwerte stehen in den Dateien als Blöcke und so sollen sie auch wieder dargestellt werden.
Aus den Daten wird mit JFreeChart ein Chart Array erzeugt, pro Block eins.
Angenommen ich lese aus einer Datei zwei Blöcke aus erstelle ich also 2 Charts und schreibe die in ein Array
Nun zeig ich noch die Messdaten in einem JTable in einer TabbedPane an, pro Tab ein Block.
Wenn ich nun das Tab wechsel möchte ich das auch das entsprechende Chart angezeigt wird.
Und genau da ist mein Problem ich weiß nicht wie, hab schon versucht mit remove() die entsprechende Komponenten zu entfernen und neu erzeugte zu setzen aber bringt nichts.
Hier mein Code:
Noch ein Screenshot um sich das ganze besser vorstellen zu können
Ich hoffe ich habe mich deutlich ausgedrückt das fällt mir manchmal nämlich schwer
Peace
kann man zur Laufzeit Komponenten austauschen?
Ich habe verschiedene Messwerte aus verschiedenen Dateien.
Diese Messwerte stehen in den Dateien als Blöcke und so sollen sie auch wieder dargestellt werden.
Aus den Daten wird mit JFreeChart ein Chart Array erzeugt, pro Block eins.
Angenommen ich lese aus einer Datei zwei Blöcke aus erstelle ich also 2 Charts und schreibe die in ein Array
Nun zeig ich noch die Messdaten in einem JTable in einer TabbedPane an, pro Tab ein Block.
Wenn ich nun das Tab wechsel möchte ich das auch das entsprechende Chart angezeigt wird.
Und genau da ist mein Problem ich weiß nicht wie, hab schon versucht mit remove() die entsprechende Komponenten zu entfernen und neu erzeugte zu setzen aber bringt nichts.
Hier mein Code:
Code:
public class WorkbenchSample extends JFrame
{
/**
*
*/
private static final long serialVersionUID = -1397645983376696508L;
private JTable table[];
private JTabbedPane tabPane;
private JScrollPane scroll1, scroll2;
private JPanel mainPanel;
private String messTitel = "Messreihe ";
private String tLabels[] = {"Batterie1", "Batterie2", "Batterie3" };
private JComboBox comboBox;
private JButton ok = new JButton("OK");
private JPanel pan;
private CellConstraints cc;
private FormLayout layout;
private ChartPanel chartPanel;
private JFreeChart[] chartArray;
public WorkbenchSample(Connector con)
{
super("WorkbenchSample");
ok.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
generateGuiComponents(((Messreihe)comboBox.getSelectedItem()).getDdlist(), false);
System.out.println(((Messreihe)comboBox.getSelectedItem()).getPath());
}
});
layout = new FormLayout("4dlu,pref,2dlu,pref,4dlu","4dlu,pref,2dlu,pref,2dlu,pref,4dlu");
cc = new CellConstraints();
comboBox = new JComboBox(con.getAll());
mainPanel = new JPanel(layout);
pan = new JPanel(new FormLayout("pref,2dlu,pref","pref"));
pan.add(comboBox, cc.xy(1, 1));
pan.add(ok, cc.xy(3, 1));
generateGuiComponents(con.getAll()[0].getDdlist(), true);
mainPanel.add(pan, cc.xy(2, 4));
add(mainPanel);
addWindowListener(new WindowClosingAdapter());
setVisible(true);
pack();
}
/**
* Generiert die Componenten fügt sie aber noch nicht hinzu
* */
private void generateGuiComponents(LinkedList<Double[][]> ddlist, boolean firstTime)
{
int count = 0;
tabPane = new JTabbedPane();
Iterator<Double[][]> ddIter = ddlist.iterator();
chartArray = new JFreeChart[ddlist.size()];
table = new JTable[ddlist.size()];
Double[][] tmp = null;
while(ddIter.hasNext())
{
tmp = ddIter.next();
table[count] = new JTable(tmp, tLabels);
table[count].setAutoscrolls(true);
tabPane.addTab(messTitel + (count+1),table[count]);
chartArray[count] = ChartFactory.createLineChart("SampleChart", "Messreihe Sample", "Volt", DatasetUtilities.createCategoryDataset("Reihe", "Messpunkt", tmp), PlotOrientation.VERTICAL, true, true, true);
count++;
}
//HIER IST DAS PROBLEM Das nächste Chart wird nicht gesetzt
tabPane.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e)
{
chartPanel = new ChartPanel(chartArray[tabPane.getSelectedIndex()]);
}
});
if(firstTime)
chartPanel = new ChartPanel(chartArray[0]);
scroll1 = new JScrollPane(chartPanel);
scroll2 = new JScrollPane(tabPane);
mainPanel.add(scroll1, cc.xy(2, 2));
mainPanel.add(scroll2, cc.xy(2, 6));
this.repaint();
}
Noch ein Screenshot um sich das ganze besser vorstellen zu können
Ich hoffe ich habe mich deutlich ausgedrückt das fällt mir manchmal nämlich schwer
Peace