Abend Comunity,
ich habe semantische Fehler in meinem Programm.
Habe mir Konsolenausgaben mit einprogrammiert um den Fehler einzugrenzen,
aber ich komme trozdem nicht auf den grünen Zweig..
Ich möchte in meiner GUI anfangs eine Startansicht anzeigen lassen, dann über ein Menü die Ansichten wechseln.
Dazu setze & rücksetzte ich booleans beim Betätigen einer Ansicht im Menü.
Anschließend frage ich diese booleans ab & instanziere ein Objekt der jeweiligen Klasse.
Es soll nur zum Grundverständniss die Hintergrundfarbe gewechselt werden.
Das Problem ist, das dauernd die Klasse der Startansicht aufgerufen wird.
Ist meine Idee so vorzugehen überhaupt richtig, also gehen die Fortgeschrittener genauso vor(von der Grundidee zumindest), oder bin ich auf dem völlig falschen Dampfer?
Hier die Main:
Die anderen Klassen sind soweit alle gleich, bis auf die gesetzte Hintergrundfarbe & der Konsolenausgabe:
Syntaktisch scheint alles richtig zu sein.
Das Programm wird ohne Ausführung der einprogrammierten Fehlermeldungen ausgeführt.
- 3njoyeD -
ich habe semantische Fehler in meinem Programm.
Habe mir Konsolenausgaben mit einprogrammiert um den Fehler einzugrenzen,
aber ich komme trozdem nicht auf den grünen Zweig..
Ich möchte in meiner GUI anfangs eine Startansicht anzeigen lassen, dann über ein Menü die Ansichten wechseln.
Dazu setze & rücksetzte ich booleans beim Betätigen einer Ansicht im Menü.
Anschließend frage ich diese booleans ab & instanziere ein Objekt der jeweiligen Klasse.
Es soll nur zum Grundverständniss die Hintergrundfarbe gewechselt werden.
Das Problem ist, das dauernd die Klasse der Startansicht aufgerufen wird.
Ist meine Idee so vorzugehen überhaupt richtig, also gehen die Fortgeschrittener genauso vor(von der Grundidee zumindest), oder bin ich auf dem völlig falschen Dampfer?
Hier die Main:
Java:
public class mainFrame extends JFrame {
private JPanel contentPane;
private boolean startansicht = true; // <- absichtlich anfangs auf true gesetzt
private boolean ansicht1 = false;
private boolean ansicht2 = false;
private StartView startAnsicht;
private ViewOne ersteAnsicht;
private ViewTwo zweiteAnsicht;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
mainFrame frame = new mainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public mainFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(0, 0, 450, 300);
setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
System.out.println("Anfang des Frames - Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnAnsichtWechseln = new JMenu("Ansicht wechseln"); // Wenn ich das Menü Ansicht wechseln betätige wird direkt die Klasse SartView unaufgefordert! aufgerufen
menuBar.add(mnAnsichtWechseln);
JMenuItem mntmStartanzeige = new JMenuItem("Startanzeige");
mntmStartanzeige.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { // Betätigen der Startanzeige
System.out.println("Anfang von Betätigung der Startanzeige im Menü");
System.out.println("Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
ansicht1 = false;
ansicht2 = false;
startansicht = true;
// mntmStartanzeige.setEnabled(false); dazu habe ich später noch eine Frage, vorerst rausgenommen
// mntmAnsicht_1.setEnabled(true);
// mntmAnsicht_2.setEnabled(true);
System.out.println("Ende von Betätigung der Startanzeige im Menü");
System.out.println("Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
}
});
mnAnsichtWechseln.add(mntmStartanzeige);
JMenuItem mntmAnsicht_1 = new JMenuItem("Ansicht 1");
mntmAnsicht_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) { // Betätigen von Ansicht 1
System.out.println("Anfang von Betätigung der Ansicht 1 im Menü");
System.out.println("Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
startansicht = false;
ansicht2 = false;
ansicht1 = true;
// mntmAnsicht_1.setEnabled(false);
// mntmStartanzeige.setEnabled(true);
// mntmAnsicht_2.setEnabled(true);
System.out.println("Ende von Betätigung der Ansicht 1 im Menü");
System.out.println("Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
}
});
mnAnsichtWechseln.add(mntmAnsicht_1);
JMenuItem mntmAnsicht_2 = new JMenuItem("Ansicht 2");
mntmAnsicht_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) { // Betätigen von Ansicht 2
System.out.println("Anfang von Betätigung der Ansicht 2 im Menü");
System.out.println("Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
startansicht = false;
ansicht1 = false;
ansicht2 = true;
// mntmAnsicht_2.setEnabled(false);
// mntmAnsicht_1.setEnabled(true);
// mntmStartanzeige.setEnabled(true);
System.out.println("Ende von Betätigung der Ansicht 2 im Menü");
System.out.println("Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
}
});
mnAnsichtWechseln.add(mntmAnsicht_2);
if (startansicht == true && ansicht1 == false && ansicht2 == false){ // Abfrage Startansicht
try {
StartView startAnsicht = new StartView ();
contentPane.add(startAnsicht);
startansicht = true;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Fehler beim Erstellen des Startbildschirms");
}
}
if (startansicht == false && ansicht1 == true && ansicht2 == false){ // Abfrage Ansicht 1
try {
ViewOne ersteAnsicht = new ViewOne ();
contentPane.add(ersteAnsicht);
ansicht1 = true;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Fehler beim Anzeigen der ersten Ansicht");
}
}
if (startansicht == false && ansicht1 == false && ansicht2 == true){ // Abfrage Ansicht 2
try {
ViewTwo zweiteAnsicht = new ViewTwo ();
contentPane.add(zweiteAnsicht);
ansicht2 = true;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Fehler beim Anzeigen der zweiten Ansicht");
}
}
System.out.println("Nach den Abfrage - Startansicht: " + startansicht + " --- Ansicht 1: " + ansicht1 + " --- Ansicht 2:" + ansicht2);
}
}
Die anderen Klassen sind soweit alle gleich, bis auf die gesetzte Hintergrundfarbe & der Konsolenausgabe:
Java:
public class StartView extends JPanel {
public void paint ( Graphics g) {
super.paint(g);
setBackground(Color.WHITE);
System.out.println("Bin in der Klasse der Startansicht");
}
}
Syntaktisch scheint alles richtig zu sein.
Das Programm wird ohne Ausführung der einprogrammierten Fehlermeldungen ausgeführt.
- 3njoyeD -