JCheckBox

Status
Nicht offen für weitere Antworten.

SeanWadlow

Mitglied
Hi Leute,

ich muss in Informatik ein Projekt abgeben. Habe mich für die Autotheoriprüfung entschieden.....Die Oberfläche habe ich bis jetzt ganz gut hinbekommen und habe da ein kleines problem: Und zwar habe ich ja drei checkboxes zur auswahl. von den drei checkboxen muss mindestens eine richtig sein. Wenn ich jetzt im ersten Fenster von den drei nur zwei angeklickt habe und dann ins nächste Fenster gehe, sollten ALLE checkboxes wieder den wert false haben also nicht angeklickt.aber irgendwie sind dann in den weiteren fenster die zwei die ich vorherigen fenster genklickt habe immer noch aktiv. Wie kann ich das Problem lösen...Mein Listener sieht bis jetzt so aus....


JPanel panelB = new JPanel();
for(int j=1;j<11;j++){
JButton button1= new JButton( ""+j);
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Fragen f= fragen[Integer.parseInt( e.getActionCommand())];
setFragen(f);

}
});
panelB.add (button1);
}
panelB.setOpaque(true);
panelB.setBackground(Color.yellow);
 

Schandro

Top Contributor
du hast ein bisschen wenig code gepostet.

Wo ist den das Problem? Setzt einfach, bevor auf das andere Fenster gewechselt wird alle 3 checkboxen auf nicht selected:
JCheckBox#setSelected(false);

( das # bedeutet das die Methode setSelected auf eine Instanz von JCheckBox aufgerufen werden soll, in deinem Fall nacheinander auf die 3 checkboxes )
 

SeanWadlow

Mitglied
So bis jetzt bin ich soweit gekommen!

CODING 1:

Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Drive1 extends JFrame {
 
	
	
	Fragen[]fragen = {
			new Fragen(1,"B","Bild1.jpg","Wer hat Vorfahrt... ","Der Gelbe PKW?",false,"Das Fahrrad?",false,"Ich",true,"5"),
			new Fragen(2,"B","1_2_26_101.jpg", "Wie Verhalte ich mich richtig?... ","Schnell fahren?",false,"Vollbremsen?",false,"Schrittgeschwindigkeit",true,"3"),
			new Fragen(3,"B","1_1_02_108.jpg", "Wie Schnell dürfen Sie fahren ","50?",false,"30?",false,"80?",true,"2"),
			new Fragen(3,"B","1_3_01_010.jpg", "Was bedeutet diese Schild","ich habe Vorfahrt?",false,"Vorfahrt gewähren?",false,"Vorsicht spielende Kinder",true,"5"),
			new Fragen(3,"B","2_1_03_021.jpg", "Wer hat Vorfahrt... ","Der Gelbe PKW?",false,"Das Fahrrad?",false,"Ich",true,"4"),
	};


	Fragen aktuelleFrage;
	
  
  JLabel frage1;			// Die Komponenten werden ausserhalb des Konstruktors initialisiert, 
  JLabel fehlerPunkte;		// damit die setFrage(Fragen frage) Methode auf sie zugreifen kann 
  JCheckBox antwort1;		// und dementsprechend verändern kann
  JCheckBox antwort2;
  JCheckBox antwort3;
  ImageIcon bild1;
  
  public Drive1 () {
	  
	  super("Theoretische Fahrschulprüfung");
	  	this.setSize(1100,600);
		this.setLocation(100,75);
		this.setVisible(true);
		this.setResizable(false);
	
	  
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    
    // Oberste Panel
    JPanel obenPanel = new JPanel ();
    obenPanel.setLayout(new BorderLayout());
    
    // Zentrum Panel
    JPanel centerPanel = new JPanel ();
    centerPanel.setOpaque(true); 
	centerPanel.setBackground(Color.yellow);
    centerPanel.setLayout(new GridBagLayout ());
      
    // Untere Panel, weiter unten als JTabbedPane
    
      
    // Komponente für oberste Panel
    JLabel labelgrundstoff = new JLabel ( "Fragen zum Grundstoff");
    obenPanel.add(labelgrundstoff,BorderLayout.EAST);
   
    
    
    // Komponente für Zentrum Panel
    GridBagConstraints c = new GridBagConstraints ();

    c.anchor = GridBagConstraints.WEST;
    bild1 = new ImageIcon ("Fahrschule.JPG");
    JLabel fuerbild = new JLabel(bild1);
    centerPanel.add(fuerbild,c);
    
    c.gridx =0;
    c.gridy =1;
    frage1 = new JLabel("Wer hat Vorfahrt?");
    frage1.setOpaque(true); 
	frage1.setBackground(Color.yellow);
    centerPanel.add(frage1,c);
    
    c.anchor=GridBagConstraints.WEST;
    c.gridx =0;
    c.gridy =2; 
    antwort1= new JCheckBox("Ich");
    antwort1.setOpaque(true); 
	antwort1.setBackground(Color.yellow);
    centerPanel.add(antwort1,c);
 
    c.gridx =0;
    c.gridy =3;
    antwort2 = new JCheckBox ("Der Gelbe LKW");
    antwort2.setOpaque(true); 
	antwort2.setBackground(Color.yellow);
    centerPanel.add(antwort2,c);

    c.gridx =0;
    c.gridy =4;
    antwort3 = new JCheckBox ("Der Grüne PKW");
    antwort3.setOpaque(true); 
	antwort3.setBackground(Color.yellow);
    centerPanel.add(antwort3,c);
    
    c.gridx =1;
    c.gridy =2;
    JLabel punkte = new JLabel("Punkte: ");
    centerPanel.add(punkte,c);
    
    c.gridx =2;
    c.gridy =2;
    fehlerPunkte = new JLabel("5");
    centerPanel.add(fehlerPunkte,c);
    
    
    
    // Komponente für das untere Panel
    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT);
    
   // Panel für die Grundstofffragen
    JPanel panelGrund = new JPanel(); 
    for(int i=1;i<21;i++){
    		JButton button= new JButton( ""+i); 
    		button.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    			System.out.println(e.getActionCommand());
    			}
    			});
    			panelGrund.add(button);  
    		} 
    panelGrund.setOpaque(true); 
    panelGrund.setBackground(Color.yellow); 
   
   
   // Panel für die Fragen der Klasse B
   JPanel panelB = new JPanel();
    for(int j=1;j<11;j++){
			JButton button1= new JButton( ""+j); 
			button1.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					Fragen f= fragen[Integer.parseInt( e.getActionCommand())];		// wandelt die Zahl auf dem Button vom String in einen Integer Wert um.																// Der Variable f wird dann der Wert in dem index übergeben hier eine die adresse des Objekts.
					setFragen(f);													// Warum a als Übergabeparameter ??
			
				
				}
				});
			panelB.add (button1);
    		}
	panelB.setOpaque(true); 
	panelB.setBackground(Color.yellow); 
		
  
    
	// beide Panels in den tabbedPane legen
	tabbedPane.addTab("Grundstoff",panelGrund);
    tabbedPane.addTab("B", panelB); 
    
    
    
    // Panels Hinzufügen
    add(obenPanel, BorderLayout.NORTH);
    add(centerPanel,BorderLayout.CENTER);
    add(tabbedPane,BorderLayout.SOUTH);
   	

    }

 
    
    
  	public void setFragen(Fragen frage){
  		
  		// Checkboxes auslesen und in aktueller Frage speichern (auswahl1-3)
  		
  		
  		// neue Frage auslesen und Checkboxes setzen
  		
  		
  		// Neue Frage/Bild setzen
  		//bild1.setIcon(frage.getBild());
  		frage1.setText(frage.getFrage());				// frage hat der wert von f. in f ist die adresse vom speicherort des jeweilligen Objek
  		antwort1.setText(frage.getAntwort1());
  		//lösung1.setText(frage.getLösung1());
  		antwort2.setText(frage.getAntwort2());
  		//lösung2.setText(frage.getLösung2());
  		antwort3.setText(frage.getAntwort3());
  		//lösung3.setText(frage.getLösung3c());
  		fehlerPunkte.setText(frage.getFehlerPunkte());
  		aktuelleFrage = frage;
  	}
  	
  
}



Coding 2


Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class FirstWindow extends JFrame {
	
	private JButton button1;
	
	FirstWindow(){
		super("Theorieprüfung");
		
		
		setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		
		this.getContentPane().setLayout(null);
		this.getContentPane().setBackground( Color.YELLOW);
		
		// Überschrift Label
		JLabel label1 = new JLabel("Würden Sie den Führerschein heute noch bestehen?",JLabel.CENTER);
		label1.setFont(new Font("Arial Rounded MT Bold", Font.BOLD, 25));
		label1.setForeground(Color.ORANGE);
		label1.setLocation(120, 30);
		label1.setSize(800,60);
		
		// 2.Überschrift
		JLabel label2 = new JLabel("Testen Sie sich!", JLabel.CENTER);
		label2.setForeground(Color.ORANGE);
		label2.setBounds(440, 80, 150, 30);
		
		// Bild
		ImageIcon icon = new ImageIcon( ClassLoader.getSystemResource( "FirstWindowo.jpg"));
		JLabel label3 = new JLabel();
		label3.setIcon(icon);
		label3.setBounds(370, 130, 320, 327); // Genaue Position
		label3.setBorder(BorderFactory.createLineBorder(Color.orange, 3)); //Rahmen um das Label
		
		// Login-Button
		button1 = new JButton("Start");
		button1.setFont(new Font("Rockwell Extra Bold", Font.BOLD, 14));
		button1.setBounds(440, 490, 200, 60);
		button1.setBackground(Color.ORANGE);
		button1.setForeground(Color.YELLOW);
		button1.setBorder(BorderFactory.createLineBorder(Color.orange, 1));
		button1.setMnemonic('l');
		
		// Zu Start-Button ActionListener hinzugefügt
		button1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
				{
					new Drive1();
					dispose();
				}
		});
		
		add(label1);
		add(button1);
		
		add(label2);
		add(label3);
		
			

}
public static void main(String[] args) {
		
		FirstWindow fenster1 = new FirstWindow();
		fenster1.pack();
		fenster1.setSize(1100, 600);
		fenster1.setLocation(100,75);
		fenster1.setVisible(true);
		fenster1.setResizable(false);
		 
	}
}


CODING 3


Java:
import java.awt.Image;
import javax.swing.*;


public class Fragen {

	String bildName;
	String typ;
	String frage;
	String antwort1,antwort2,antwort3;
	boolean lösung1,lösung2,lösung3;
	boolean auswahl1,auswahl2,auswahl3;
	String fehlerPunkte;
	ImageIcon bild ;
	int nr;
	
	
	public Fragen(int nr,String typ,String bildName,String frage, String antwort1,boolean lösung1,String antwort2,boolean lösung2,String antwort3,boolean lösung3,String fehlerPunkte){
		this.nr = nr;
		this.typ = typ;
		this.bild= new ImageIcon("bildName");
		this.frage= frage;
		this.antwort1 = antwort1;
		this.lösung1 = lösung1;
		this.antwort2 = antwort2;
		this.lösung2 = lösung2;
		this.antwort3 = antwort3;
		this.lösung3 = lösung3;
		this.fehlerPunkte=fehlerPunkte;
	}

	public int getNr(){
		return nr;
	}
		
	public String getTyp(){
		return typ;
	}

	public String getFrage(){
		return frage;
	}
	
	public String getAntwort1(){
		return antwort1;
	}
	
	public boolean getLösung1(){
		return lösung1;
	}
	public String getAntwort2(){
		return antwort2;
	}
	
	public boolean getLösung2(){
		return lösung2;
	}
	public String getAntwort3(){
		return antwort3;
	}
	
	public boolean getLösung3(){
		return lösung3;
	}

	public String getFehlerPunkte(){
		return fehlerPunkte;
	}
	
	public ImageIcon getBild(){
		return bild;
	}
	
	 
	
	
	
	
}
 
Zuletzt bearbeitet von einem Moderator:

Schandro

Top Contributor
So wie ichs verstanden habe sollen alle 3 checkboxes nicht selected sein, nachdem setFragen aufgerufen wurde?
Dann schreib irgendwo in setFragen das rein:
antwort1.setSelected(false);
antwort2.setSelected(false);
antwort3.setSelected(false);


Offtopic:
was ist denn, wenn eine Frage mehr/weniger als 3 Anwortmöglichkeiten haben soll? Mach doch vllt. das ganze Antwortsystem ein bisschen dynamischer, das hilft auch um "besseren" Code zu schreiben weil es dann weniger Wiederholungen von ähnlichen Code gibt.
 
Zuletzt bearbeitet:

SeanWadlow

Mitglied
So wie ichs verstanden habe sollen alle 3 checkboxes nicht selected sein, nachdem setFragen aufgerufen wurde?
Dann schreib irgendwo in setFragen das rein:
antwort1.setSelected(false);
antwort2.setSelected(false);
antwort3.setSelected(false);


hmm das Problem ist aber beim deinem Vorschlag, sobald ich auf das zweite fenster wechsel sind die checkboxes zwar nicht selected aber wenn ich dann auf das erste fenster gehe sind die selected boxes wieder nicht selected..hast du ein vorschlag?
 

Schandro

Top Contributor
Du müsstest irgendwo abspeichern, welche Anworten bei welcher Frage selektiert oder nicht selektiert sind. Wie genau musst du wissen bzw. es irgendwie in deine Architektur einfügen.
 

SeanWadlow

Mitglied
Ja eben die müssten sozusagen gespeichert werden und am ende des Testes mit den Richtigen antworten ausgegeben werden. verstanden? danke dir!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
C JCheckBox disabled text color AWT, Swing, JavaFX & SWT 9
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
B JCheckBox ausrichten ? AWT, Swing, JavaFX & SWT 1
Paul15 JCheckBox und JToggleButton AWT, Swing, JavaFX & SWT 5
M Swing JCheckbox Namen vergeben? AWT, Swing, JavaFX & SWT 5
E Zustand der JCheckBox abfragen AWT, Swing, JavaFX & SWT 1
D JCheckbox und JSpinner in JTable AWT, Swing, JavaFX & SWT 9
K Swing JCheckbox ändern AWT, Swing, JavaFX & SWT 3
N ChangeListener und jCheckBox AWT, Swing, JavaFX & SWT 3
B JTable inkl. JCheckbox AWT, Swing, JavaFX & SWT 5
StrikeTom JCheckBox in JTable AWT, Swing, JavaFX & SWT 6
A Swing JCheckbox transparent machen AWT, Swing, JavaFX & SWT 7
G Swing JCheckBox, setEnabled(false) und HTML Text Problem AWT, Swing, JavaFX & SWT 5
Z Swing JCheckBox in einer JTable AWT, Swing, JavaFX & SWT 8
B JCheckbox ja oder nein AWT, Swing, JavaFX & SWT 3
O Jcheckbox Status nachträglich abfragen AWT, Swing, JavaFX & SWT 2
C Swing JCheckBox setEditable(false)? AWT, Swing, JavaFX & SWT 9
X Swing JCheckbox in JTable AWT, Swing, JavaFX & SWT 6
F DefaultTableCellRenderer blendet JCheckBox aus AWT, Swing, JavaFX & SWT 4
Burny91 Swing JCheckBox in JList einbetten AWT, Swing, JavaFX & SWT 4
K JCheckBox datenstruktur AWT, Swing, JavaFX & SWT 10
J Swing JCheckBox enabled, aber graues Kästchen AWT, Swing, JavaFX & SWT 2
S Swing Problem mit JCheckBox auf JPanel in JScrollPane AWT, Swing, JavaFX & SWT 8
C JCheckBox Kreuz statt Haken AWT, Swing, JavaFX & SWT 7
S Swing Werte einer Jcheckbox aus eine Klasse A in eine Klasse B aufrufen AWT, Swing, JavaFX & SWT 6
S GUI blocked after checked a JcheckBox AWT, Swing, JavaFX & SWT 2
S JCheckBox Paint AWT, Swing, JavaFX & SWT 7
M JCheckBox Icon anpassen AWT, Swing, JavaFX & SWT 2
E Matrix mit JCheckBox AWT, Swing, JavaFX & SWT 29
Balbes Änderung des Wertes von JCheckBox in einer JTable AWT, Swing, JavaFX & SWT 4
S Frage zu JCheckBox AWT, Swing, JavaFX & SWT 2
T Swing JCheckBox: Wie getState() abfragen? AWT, Swing, JavaFX & SWT 2
FoolMoon Swing JCheckBox neben Text in einer Tabelle AWT, Swing, JavaFX & SWT 2
J Icon einer JCheckBox AWT, Swing, JavaFX & SWT 6
E Swing Wechsel in JCheckBox abfangen AWT, Swing, JavaFX & SWT 10
D JTable - JCheckbox und Renderer AWT, Swing, JavaFX & SWT 2
V JCheckBox in JTable AWT, Swing, JavaFX & SWT 3
T JCheckBox deselektieren (Haken wieder entfernen) - wie? AWT, Swing, JavaFX & SWT 5
W JRadioButton / JCheckBox problem AWT, Swing, JavaFX & SWT 6
K JCheckBox in einer JTable auswählbar machen AWT, Swing, JavaFX & SWT 2
J Listener erkennt Deselektierung von JCheckbox nicht AWT, Swing, JavaFX & SWT 13
T Dynamische Anpassung einer jCheckBox AWT, Swing, JavaFX & SWT 11
T JCheckBox ohne "Box"? AWT, Swing, JavaFX & SWT 6
H JCheckBox - Ist die Abfrage wirklich so umständlich ? AWT, Swing, JavaFX & SWT 3
A Problem der Größe von JCheckBox nach Hinzufügen eines Popups AWT, Swing, JavaFX & SWT 2
F Wie Item Listener zu JCheckBox(in JTable) hinzufügen? AWT, Swing, JavaFX & SWT 6
M JCheckbox, das selektieren verhindern AWT, Swing, JavaFX & SWT 9
M JCheckBox Standard MouseListener entfernen AWT, Swing, JavaFX & SWT 13
A JCheckBox abfragen AWT, Swing, JavaFX & SWT 6
J Variabler VariablenIdentifier - JCheckBox AWT, Swing, JavaFX & SWT 9
I JTree und JCheckbox Problem AWT, Swing, JavaFX & SWT 4
G jCheckBox AWT, Swing, JavaFX & SWT 8
G JMenu problem mit der Breite von einer JCheckBox AWT, Swing, JavaFX & SWT 2
D Seltsamer Rahmen bei JCheckBox AWT, Swing, JavaFX & SWT 7
G JCheckBox mit Text und Icon AWT, Swing, JavaFX & SWT 5
M JCheckbox in JCombobox AWT, Swing, JavaFX & SWT 7
L jCheckBox - aktiviert und nicht aktiviert AWT, Swing, JavaFX & SWT 7
H jCheckBox abschalten AWT, Swing, JavaFX & SWT 3
B JTextFiled, JCheckBox, JSpinner Eigenschaften speichern AWT, Swing, JavaFX & SWT 2
G JCheckbox Buttongroup Problem AWT, Swing, JavaFX & SWT 7
P JCheckBox: das 4eck mit kreuz soll rechts vom wort stehen AWT, Swing, JavaFX & SWT 3
R JCheckBox mit Image und Text AWT, Swing, JavaFX & SWT 5
G JCheckBox nicht änderbar machen AWT, Swing, JavaFX & SWT 2
V Statusabfrage von JCheckBox und JComboBox AWT, Swing, JavaFX & SWT 7
P JCheckBox AWT, Swing, JavaFX & SWT 4
L Probleme mit JCheckBox AWT, Swing, JavaFX & SWT 15
A JButton und JCheckBox im JTree reagieren nicht AWT, Swing, JavaFX & SWT 13
J JCheckBoxMenuItem und JCheckBox synchronisieren AWT, Swing, JavaFX & SWT 6
D Welche JCheckBox des Arrays ist das? AWT, Swing, JavaFX & SWT 2
P JCheckbox einmal gewählt immer gewählt ? AWT, Swing, JavaFX & SWT 2
M Weiße JCheckBox? AWT, Swing, JavaFX & SWT 5
S Herausbekommen welche JCheckBox selectiert wurde AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben