Hallo,
gleich vorneweg der relevante Teil meines Programmcodes:
Nun zu meinen Fragen:
1. Gewünschtes Ergebnis wäre, dass man in dem ersten Fenster eine Auswahl der zu verwendeten Daten trifft und nach dem Drücken des Buttons ein neues Fenster aufgeht, in dem dann ein Diagramm (hier ein simples Rechteck) erscheint.
Allerdings funktioniert es noch nicht so, wie ich das gerne hätte. Ändert man die beiden Variablen buttonClicked (-> true) und erstesFenster (-> false) manuell um, dann funktioniert der Wechsel von der "Auswahl" hin zum "Diagramm". Die actionPerformed-Methode sollte doch eigentlich genau das machen, tut sie wohl aber nicht....
Hat jemand eine Idee, wie ich das gewünschte Ergebnis erhalten könnte? (Es muss nicht zwingend ein neues Fenster aufgehen. Nur der Wechsel von Auswahl zum Diagramm sollte "irgendwie" funktionieren )
2. Ich habe schon oft gelesen, dass man anstelle der paint-Methode lieber die paintComponent-Methode verwenden soll. Führt man diese Änderung im obigen Programmcode durch, wird zwar die Darstellung der Auswahlattributen (Button, Checkbox,....) besser, allerdings ist dann das Rechteck nach manueller Änderung der beiden boolschen Variablen nicht mehr vorhanden.
Kann mir jemand erklären woran das liegt, oder kurz den Unterschied zwischen paint und paintComponent erklären?!?
Vielen Dank für die Unterstützung!!
gleich vorneweg der relevante Teil meines Programmcodes:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SankeyEditorTest extends JFrame implements ActionListener {
boolean buttonClicked = false;
boolean erstesFenster = true;
Container c;
JLabel obereZeile = new JLabel("Auswahl der gewünschten Komponenten");
JCheckBox cb[] = new JCheckBox[8];
JButton start;
public SankeyEditorTest () {
if (erstesFenster){
c = getContentPane();
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel(new GridLayout(4,2));
JPanel jp3 = new JPanel();
cb[0] = new JCheckBox("alle");
cb[1] = new JCheckBox("Gesamtenergie");
cb[2] = new JCheckBox("Fahrwerk");
cb[3] = new JCheckBox("Hubwerk");
cb[4] = new JCheckBox("LAM");
cb[5] = new JCheckBox("SPS");
cb[6] = new JCheckBox("ZKK");
cb[7] = new JCheckBox("Rückspeiseeinheit");
start = new JButton("Sankey-Diagramm erstellen");
start.addActionListener(this);
jp1.add(obereZeile);
for (int i = 0; i < 8; i++){
jp2.add(cb[i]);
}
jp3.add(start);
c.add(jp1,BorderLayout.NORTH);
c.add(jp2,BorderLayout.CENTER);
c.add(jp3,BorderLayout.SOUTH);
}
else {System.out.println("paint-Methode sollte jetzt laufen");} // zum Testen, ob Variable erstesFenster wirklich auf false gesetzt wird
}
public void paint(Graphics g)
{
if(buttonClicked){
System.out.println("Paint-Methode läuft"); // zum Testen, ob das Programm in die Paint-Methode kommt
int Gesamthöhe = 120;
int Gesamtlänge = 200;
int StartpunktX = 0;
int StartpunktY = 100;
int LängeSchräge = 20;
int BreiteSchräge = 50;
Color FarbeGesamtE = new Color(0, 150, 100);
g.setColor(FarbeGesamtE);
g.fillRect(StartpunktX, StartpunktY, Gesamtlänge, Gesamthöhe);
}
}
public static void main(String[] args) {
SankeyEditorTest fenster = new SankeyEditorTest();
fenster.setTitle("Sankey Editor - Auswahl");
fenster.setSize(500,250);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if (buttonClicked == false){
buttonClicked = true;
erstesFenster = false;
dispose();
SankeyEditor fenster2 = new SankeyEditor();
fenster2.setTitle("Sankey Editor - Diagramm");
fenster2.setSize(500,250);
fenster2.setVisible(true);
fenster2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
}
Nun zu meinen Fragen:
1. Gewünschtes Ergebnis wäre, dass man in dem ersten Fenster eine Auswahl der zu verwendeten Daten trifft und nach dem Drücken des Buttons ein neues Fenster aufgeht, in dem dann ein Diagramm (hier ein simples Rechteck) erscheint.
Allerdings funktioniert es noch nicht so, wie ich das gerne hätte. Ändert man die beiden Variablen buttonClicked (-> true) und erstesFenster (-> false) manuell um, dann funktioniert der Wechsel von der "Auswahl" hin zum "Diagramm". Die actionPerformed-Methode sollte doch eigentlich genau das machen, tut sie wohl aber nicht....
Hat jemand eine Idee, wie ich das gewünschte Ergebnis erhalten könnte? (Es muss nicht zwingend ein neues Fenster aufgehen. Nur der Wechsel von Auswahl zum Diagramm sollte "irgendwie" funktionieren )
2. Ich habe schon oft gelesen, dass man anstelle der paint-Methode lieber die paintComponent-Methode verwenden soll. Führt man diese Änderung im obigen Programmcode durch, wird zwar die Darstellung der Auswahlattributen (Button, Checkbox,....) besser, allerdings ist dann das Rechteck nach manueller Änderung der beiden boolschen Variablen nicht mehr vorhanden.
Kann mir jemand erklären woran das liegt, oder kurz den Unterschied zwischen paint und paintComponent erklären?!?
Vielen Dank für die Unterstützung!!
Zuletzt bearbeitet: