Achtung, ich bin noch ganz am Anfang, also wenn diese Frage dämlich klingen sollte - tut mir leid.
Ich versuche gerade für den (Chemie-) Unterricht ein Quiz zum Thema Säuren zu erstellen. Dabei soll sich als Erstes ein Hauptbildschirm öffnen und wenn man bei diesem den RadioButton auf "Schwefelsäure" setzt und "Weiter" drückt, soll sich dieser Frame schließen und der Frame mit der ersten Frage zum Thema Schwefelsäure öffnen (weiter bin ich noch nicht gekommen). Dabei gibt es allerdings 2 Probleme:
1. Der 2. Frame wird, wenn er vom Frame "Hauptbildschirm" aus geöffnet wird, trotz "inst.setLocation(600,300)" in der linken oberen Ecke des Bildschirms angezeigt. Wird er allerdings separat als "Einzelprogramm" geöffnet, wird er in der Mitte des Bildschirms angezeigt (genauso verhält es sich auch mit den 2 anderen Frames, die ich schon gebastelt habe).
2. Wird der 2. Frame vom Hauptbildschirm aus geöffnet, sind er und die Elemente im Inneren ganz klein zusammengequetscht. Wird er nochmals separat geöffnet, ist der Frame in seiner vollen Größe sichtbar ("inst.setSize(400,300)"), die Elemente sind aber trotz laut dem Quelltext richtiger Anordnung wieder zusammengequetscht.
Es gibt noch ein paar weitere Fragen, aber das sind erstmal die 2 wichtigsten. Ich hänge nochmal den Quelltext der beiden Klassen an.
1. "Hauptbildschirm":
2. "Schwefelsäure1" (unten habe ich schon einen Zähler festgelegt, als nicht wundern):
Danke für eure Hilfe. Ich benutze übrigens "jigloo" als GUI-Erweiterung.
Ich versuche gerade für den (Chemie-) Unterricht ein Quiz zum Thema Säuren zu erstellen. Dabei soll sich als Erstes ein Hauptbildschirm öffnen und wenn man bei diesem den RadioButton auf "Schwefelsäure" setzt und "Weiter" drückt, soll sich dieser Frame schließen und der Frame mit der ersten Frage zum Thema Schwefelsäure öffnen (weiter bin ich noch nicht gekommen). Dabei gibt es allerdings 2 Probleme:
1. Der 2. Frame wird, wenn er vom Frame "Hauptbildschirm" aus geöffnet wird, trotz "inst.setLocation(600,300)" in der linken oberen Ecke des Bildschirms angezeigt. Wird er allerdings separat als "Einzelprogramm" geöffnet, wird er in der Mitte des Bildschirms angezeigt (genauso verhält es sich auch mit den 2 anderen Frames, die ich schon gebastelt habe).
2. Wird der 2. Frame vom Hauptbildschirm aus geöffnet, sind er und die Elemente im Inneren ganz klein zusammengequetscht. Wird er nochmals separat geöffnet, ist der Frame in seiner vollen Größe sichtbar ("inst.setSize(400,300)"), die Elemente sind aber trotz laut dem Quelltext richtiger Anordnung wieder zusammengequetscht.
Es gibt noch ein paar weitere Fragen, aber das sind erstmal die 2 wichtigsten. Ich hänge nochmal den Quelltext der beiden Klassen an.
1. "Hauptbildschirm":
Java:
package Hauptbildschirm;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
public class Hauptbildschirm extends javax.swing.JFrame {
{
try {
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch(Exception e) {
e.printStackTrace();
}
}
private JLabel jLWillkommen;
private JLabel jLSäureAuswahl;
private JLabel jLBild;
private JButton jBSchließen;
private JButton jBWeiter;
private JLabel jLQuizBeginn;
private JRadioButton jRPhosphorsäure;
private JRadioButton jRSalpetersäure;
private JRadioButton jRSalzsäure;
private JRadioButton jRSchwefelsäure;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Hauptbildschirm inst = new Hauptbildschirm();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
inst.setLocation(600,300);
inst.setSize(400,300);
}
});
}
public Hauptbildschirm() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
getContentPane().setLayout(null);
{
jLWillkommen = new JLabel();
getContentPane().add(jLWillkommen, "Center");
jLWillkommen.setText("Willkommen!");
jLWillkommen.setBounds(150, 3, 232, 15);
}
{
jLSäureAuswahl = new JLabel();
getContentPane().add(jLSäureAuswahl, "North");
jLSäureAuswahl.setText("Wählen Sie einfach eine Säure aus!");
jLSäureAuswahl.setBounds(100, 35, 284, 15);
}
{
jRSchwefelsäure = new JRadioButton();
getContentPane().add(jRSchwefelsäure, "West");
jRSchwefelsäure.setText("Schwefelsäure");
jRSchwefelsäure.setBounds(1, 125, 99, 20);
}
{
jRSalzsäure = new JRadioButton();
getContentPane().add(jRSalzsäure, "East");
jRSalzsäure.setText("Salzsäure");
jRSalzsäure.setBounds(1, 175, 92, 20);
}
{
jRSalpetersäure = new JRadioButton();
getContentPane().add(jRSalpetersäure, "South");
jRSalpetersäure.setText("Salpetersäure");
jRSalpetersäure.setBounds(1, 150, 92, 20);
}
{
jRPhosphorsäure = new JRadioButton();
getContentPane().add(jRPhosphorsäure, "Center");
jRPhosphorsäure.setText("Phosphorsäure");
jRPhosphorsäure.setBounds(1, 200, 384, 20);
}
{
jLQuizBeginn = new JLabel();
getContentPane().add(jLQuizBeginn);
jLQuizBeginn.setText("Und das Quiz kann beginnen...");
jLQuizBeginn.setBounds(100, 50, 250, 15);
}
{
jBWeiter = new JButton();
getContentPane().add(jBWeiter);
jBWeiter.setText("Weiter");
jBWeiter.setBounds(175, 227, 80, 23);
jBWeiter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBWeiterActionPerformed(evt);
}
});
}
{
jBSchließen = new JButton();
getContentPane().add(jBSchließen);
jBSchließen.setText("Schließen");
jBSchließen.setBounds(275, 227, 80, 23);
jBSchließen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBSchließenActionPerformed(evt);
}
});
}
{
jLBild = new JLabel();
getContentPane().add(jLBild);
jLBild.setText("jLBild");
jLBild.setIcon(new ImageIcon(new URL("http://www.seilnacht.com/Lexikon/tnsaeur2.JPG")));
jLBild.setBounds(138, 86, 212, 124);
}
ButtonGroup saeuren = new ButtonGroup();
saeuren.add(jRPhosphorsäure);
saeuren.add(jRSalpetersäure);
saeuren.add(jRSalzsäure);
saeuren.add(jRSchwefelsäure);
new Progressbar().setVisible(false);
this.pack();
} catch (Exception e) {
//add your error handling code here
e.printStackTrace();
}
}
private void jBSchließenActionPerformed(ActionEvent evt) {
this.setVisible(false);
}
private void jBWeiterActionPerformed(ActionEvent evt) {
if (jRSchwefelsäure.isSelected()) {
new Schwefelsäure1().setVisible(true);
this.setVisible(false);
}
}
}
2. "Schwefelsäure1" (unten habe ich schon einen Zähler festgelegt, als nicht wundern):
Java:
package Hauptbildschirm;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
public class Schwefelsäure1 extends javax.swing.JFrame {
{
//Set Look & Feel
try {
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch(Exception e) {
e.printStackTrace();
}
}
private JLabel jLFrage;
private JButton jBWeiter;
private JRadioButton jRadioButton1;
private JRadioButton jRF3;
private JRadioButton jRF2;
private JRadioButton jRF1;
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Schwefelsäure1 inst = new Schwefelsäure1();
inst.setLocationRelativeTo(null);
inst.setLocation(600,300);
inst.setSize(400,300);
inst.setVisible(true);
}
});
}
public Schwefelsäure1() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
jLFrage = new JLabel();
getContentPane().add(jLFrage, "Center");
jLFrage.setText("1.Frage: Wie lautet die korrekte Formel für Schwefelsäure?");
jLFrage.setBounds(60, 20, 289, 15);
}
{
jRF1 = new JRadioButton();
getContentPane().add(jRF1, "North");
jRF1.setText("H2SO4");
jRF1.setBounds(1, 200, 84, 20);
}
{
jRF2 = new JRadioButton();
getContentPane().add(jRF2, "West");
jRF2.setText("H3SO4");
jRF2.setBounds(1, 150, 84, 20);
}
{
jRF3 = new JRadioButton();
getContentPane().add(jRF3, "East");
jRF3.setText("HSO3");
jRF3.setBounds(1, 125, 76, 20);
}
{
jRadioButton1 = new JRadioButton();
getContentPane().add(jRadioButton1, "South");
jRadioButton1.setText("H3SO3");
jRadioButton1.setBounds(1, 175, 76, 20);
}
{
jBWeiter = new JButton();
getContentPane().add(jBWeiter, "Center");
jBWeiter.setText("Weiter");
jBWeiter.setBounds(175, 227, 80, 23);
jBWeiter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBWeiterActionPerformed(evt);
}
});
}
ButtonGroup formeln1 = new ButtonGroup();
formeln1.add(jRF1);
formeln1.add(jRF2);
formeln1.add(jRF3);
formeln1.add(jRadioButton1);
setSize(400,300);
new Hauptbildschirm().setVisible(false);
this.setVisible(true);
pack();
getContentPane().setLayout(null);
} catch (Exception e) {
//add your error handling code here
e.printStackTrace();
}
}
private void jBWeiterActionPerformed(ActionEvent evt) {
int schwefelsäure = 0;
if(jRF1.isSelected()) {
schwefelsäure++;
} else {
schwefelsäure--;
}
}
}
Danke für eure Hilfe. Ich benutze übrigens "jigloo" als GUI-Erweiterung.