Hallo zusammen,
ich soll ein Programm schreiben, dass eine Frage stellt, auf die Antwort wartet und dann eine neue Frage stellt. Jetzt habe ich mir vorgestellt, für jede Frage eine Class und darin einen Frame zu erstellen.
Siehe:
Wenn ich jetzt eine weitere Class mit der Methode "createandshowGUI" erstellen würde, würde er wahrscheinlich beide Fenster gleichzeitig anzeigen.
Ich möchte aber, das erst die Frage beantwortet und dann das nächste Fenster geöffnet wird.
Versteht ihr was ich meine
?
Vielen dank!
Jens
ich soll ein Programm schreiben, dass eine Frage stellt, auf die Antwort wartet und dann eine neue Frage stellt. Jetzt habe ich mir vorgestellt, für jede Frage eine Class und darin einen Frame zu erstellen.
Siehe:
Code:
package sabine_project;
import javax.swing.*;
public class Sabine
{
public static void main(String[] args)
{
Runnable runnable = new Runnable()
{
public void run()
{
Question1 q1Frame = new Question1();
q1Frame.createAndShowGUI();
}
};
SwingUtilities.invokeLater(runnable);
}
}
Code:
package sabine_project;
import javax.swing.*;
import java.util.*;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.*;
public class Question1 extends JPanel implements ActionListener, KeyListener
{
// globale Variabeln
JLabel lPressed = new JLabel("Nothing");
JFrame startframe = new JFrame("Sabines Projekt");
long waited = 0;
//JLabel typepicture, adpicture, adpicture2, typepicture2 = new JLabel();
public int createAndShowGUI()
{
// Programm beenden, nachdem das Fenster geschloßen wurde.
startframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
startframe.setLocation(350,75);
startframe.addKeyListener(this);
// Panel anstatt kompliziertem ContentPane erstellen.
JPanel anzeigePanel = new JPanel();
anzeigePanel.addKeyListener(this);
anzeigePanel.setLayout(new GridLayout(2, 3, 5, 5));
JLabel typepicture = new JLabel();
typepicture.setIcon(new ImageIcon("/home/jens/type_q.png"));
typepicture.setAlignmentY(300);
anzeigePanel.add(typepicture/*, BorderLayout.LINE_START*/);
JLabel adpicture = new JLabel();
adpicture.setIcon(new ImageIcon("/home/jens/testpic.png"));
anzeigePanel.add(adpicture);
JLabel typepicture2 = new JLabel();
typepicture2.setIcon(new ImageIcon("/home/jens/type_a.png"));
anzeigePanel.add(typepicture2);
JLabel adpicture2 = new JLabel();
adpicture2.setIcon(new ImageIcon("/home/jens/testpic.png"));
anzeigePanel.add(adpicture2);
lPressed.setText("Key");
anzeigePanel.add(lPressed);
// ContentPane des Frames zuletzt setzten.
startframe.setContentPane(anzeigePanel);
// Frame anzeigen.
startframe.pack();
startframe.setVisible(true);
// Focus auf den Frame setzten.
startframe.requestFocus();
//anzeigePanel.requestFocus();
// Zeit nach der anzeige holen...
Date mytime = new Date();
waited = mytime.getTime();
return 0;
}
public void keyTyped(KeyEvent e)
{
String KeyChar = Character.toString(e.getKeyChar());
lPressed.setText(KeyChar);
if (KeyChar.equalsIgnoreCase("q"))
{
Date mytime2 = new Date();
long gerechnet = ((mytime2.getTime() - waited));
}
}
public void keyPressed(KeyEvent e)
{
//lPressed.setText(Integer.toString(e.getID()));
}
public void keyReleased(KeyEvent e)
{
//lPressed.setText(Integer.toString(e.getID()));
}
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
Wenn ich jetzt eine weitere Class mit der Methode "createandshowGUI" erstellen würde, würde er wahrscheinlich beide Fenster gleichzeitig anzeigen.
Ich möchte aber, das erst die Frage beantwortet und dann das nächste Fenster geöffnet wird.
Versteht ihr was ich meine

Vielen dank!
Jens