Somehow fixed the problem with the timer activating too soon by changing the timer start to when it is in the "inner process" of the main method

This commit is contained in:
cs-powell
2024-12-17 14:18:53 -05:00
parent 33a4b8eb7e
commit 0eafd83c5b
15 changed files with 267 additions and 75 deletions

View File

@@ -0,0 +1,80 @@
package Visualizer;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ScreenManager extends JPanel {
JPanel display = new JPanel(new BorderLayout());
Screen[] screens = new Screen[2];
ScreenType currentScreen;
JButton toggle = new JButton("Cycle Screens");
public ScreenManager(Screen start, Screen data) {
super(new BorderLayout());
this.setVisible(true);
screens[0] = start;
screens[1] = data;
toggle.setVisible(true);
toggle.addActionListener(e -> {
if (currentScreen == ScreenType.START) {
switchScreens(ScreenType.DATA);
} else {
switchScreens(ScreenType.DATA2);
}
// if (currentScreen == ScreenType.DATA2) {
// switchScreens(ScreenType.DATA);
// }
});
this.add(toggle, BorderLayout.WEST);
currentScreen = ScreenType.START;
display.add(screens[0]);
this.add(display, BorderLayout.CENTER);
display.setBackground(Color.black);
}
public void switchScreens(ScreenType st) {
display.removeAll();
switch(st) {
case START:
System.out.println("Switch to start");
display.add(screens[0],BorderLayout.CENTER);
currentScreen = ScreenType.START;
display.repaint();
revalidate();
break;
case DATA:
System.out.println("Switch to data");
display.add(screens[1],BorderLayout.CENTER);
currentScreen = ScreenType.DATA;
display.repaint();
revalidate();
break;
case DATA2:
System.out.println("Switch to data 2");
display.add(((visualizer)screens[1]).exportDisplay(),BorderLayout.CENTER);
currentScreen = ScreenType.DATA2;
display.repaint();
revalidate();
break;
}
}
}