Check Box mit Array

Ratzefummel

Mitglied
Halli Hallo,

ich habe ein paar Checkboxen programmiert und möchte diesen nun beim auswählen einen Wert übergeben. Diese Werte sollen addiert bzw. subtrahiert werden, sobald ich die checkboxen aktiviere/deaktiviere. Dier aktuelle Wert soll dann ausgegeben werden.

Bis jetzt habe ich es so gelöst:

Code:
public class InfoListener implements ItemListener {

	
	@Override
	public void itemStateChanged(ItemEvent e) {
		
		int aktuell = 0;
		int [] CP = new int [11];
		CP [0] = 4;
		CP [1] = 5;
		CP [2] = 6;
		CP [3] = 7;
		CP [4] = 8;
		CP [5] = 9;
		CP [6] = 10;
		CP [7] = 11;
		CP [8] = 14;
		CP [9] = 15;
		CP [10] = 30;
		
		
		

if (info.isSelected() == true)
{
	aktuell = CP[5] + aktuell;
	points.setText("Sie haben  " + aktuell + " Creditpoints");
	}
	
if (info.isSelected() == false)
{
	aktuell = aktuell - CP[5];
    points.setText ("Sie haben " + aktuell + "Creditpoints");
}

	
	
	
	if (info2.isSelected() == true)
	{
		aktuell = aktuell + CP[5];
	points.setText("Sie haben " + aktuell + "Creditpoints");
	}
	}
		
		
	


	
	
}

Bei der Checkbox Info funktioniert es soweit ganz gut. Wenn ich das selbe jetzt aber mit der checkbox info2 machen möchte geht es leider nicht mehr. Bzw. ich muss erst info aktivieren und dann info2. danach wieder info deaktivieren und dann wieder aktivieren. dann zeigt er mir das richtige an. :D

Bin gänzlich verwirrt.....

Falls mir jemand einen effektivieren weg zeigen kann, bzw. mir einen denkanstoss geben könnte wäre ich super dankbar!
 

kaoZ

Top Contributor
Wo und wie deklarierst und initialisierst du denn deine CheckBoxen ? Code?

[TIPP]
Variablen schreibt man lowerCamelCase :)

PS: dein array kannst du auch so initialisieren :

int[] cP = new int[]{1,2,3,4,5,6,7,8,9,10};
[/TIPP]
 
Zuletzt bearbeitet:

Ratzefummel

Mitglied
Hi!

also die checkboxen initialisiere ich hier:

Code:
public void createWidgets() {
	
	
	
	
	
	try{
		
	
	head = new JLabel ("Creditpointrechner");
	head.setForeground(Color.black);
	head.setFont(new Font ("Cooper black ",  Font.PLAIN , 72));
	head.setHorizontalAlignment(SwingConstants.CENTER);
	
	
	points = new JLabel ("");
	points.setForeground(Color.black);
	points.setFont(new Font ("Cooper black ",  Font.PLAIN , 50));
	points.setHorizontalAlignment(SwingConstants.CENTER);
	
	lbl1 = new JLabel (" Semester 1");
	lbl1.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	lbl2 = new JLabel (" Semester 2");	
	lbl2.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	lbl3 = new JLabel ( "Semester 3");
	lbl3.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	
	info = new JCheckBox("Informatik 1");
	info.setOpaque(false);
	info.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	info.addItemListener(new InfoListener());
	
	
	info2 = new JCheckBox("Informatik 2");
	info2.setOpaque(false);
	info2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	info.addItemListener(new InfoListener());

Das mit den array weiß ich schon. fand die weise aber irgendwie übersichtlicher....
 

kaoZ

Top Contributor
Du meinst du möchtest deinen 2 CheckBoxen jeweils einen Wert zuweisen ?

nur nochmal zum verständnis :

Du meinst solche CheckBoxen ?

 
Zuletzt bearbeitet:

kaoZ

Top Contributor
if (info.isSelected() == false)
{
aktuell = aktuell - CP[5];
points.setText ("Sie haben " + aktuell + "Creditpoints");
}


das würde dazu führen das die Lokale Variable "aktuell" deiner stateChanged Methode den Wert -9 erhält da du sie zu beginn mit "0" initialisierst

Du könntest den state der CheckBox per Tenärem Operator zu einem Integer casten, dann würde der status jeweils 0 oder 1 ergeben, je nachdem on die CheckBox selected ist oder nicht

Die Frage die sich mir jedoch stellt , worauf genau möchtest du hinaus, du deklariertst alles in einer Methode , die sich in deiner Unterklasse eines Listeners befindet.
 
Zuletzt bearbeitet:

Ratzefummel

Mitglied
Es sollen auf jeden fall checkboxen werden, so wie du oben gezeigt hast.
Der Sinn dahinter bzw. das was ich erreichen will ist, einen "creditpointrechner" zu programmieren.
Also ich habe mehrere Module (Informatik, Mathe usw.) jeweils als Checkbox.
Jedes Modul soll jeweils seine Creditpoints bekommen. (Informatik hat zum beispiel 9 CP´s)
Wenn ich jetzt Checkbox Informatik auswähle soll unten "Sie haben 9 CP´s".
Wenn ich jetzt Informatik2 auswähle soll unten " Sie haben 18 CP´s".
Und dann natürlich das ganze auch rückwärts, wenn ich die checkboxen deaktiviere.

Hier einmal die komplette Klasse:
Code:
public class Creditpointrechner extends JPanel {

private BackgroundPanel backgroundpanel;
private JLabel head;
private JLabel points;
private JCheckBox info;
private JCheckBox info2;
private JCheckBox info3;
private JCheckBox design;
private JCheckBox design2;
private JCheckBox design3;
private JCheckBox cad;
private JCheckBox cad2;
private JCheckBox steuerung;
private JCheckBox steuerung2;
private JCheckBox steuerung3;
private JCheckBox mathe;
private JCheckBox mathe2;
private JCheckBox mathe3;
private JScrollPane spane;
private JLabel lbl1;
private JLabel lbl2;
private JLabel lbl3;
private JButton zurueck;
private Image cprechner;
private JPanel pnlnorth;
private JPanel pnlcenter;
private JPanel pnlsouth;
private CardLayout c15;
private JPanel panelcontainer;

public Creditpointrechner  (CardLayout c15,JPanel panelcontainer) {
	
	this.c15 = c15;
	this.panelcontainer = panelcontainer;
	createWidgets();
	layoutWidgets();
	
}


public void createWidgets() {
	
	
	
	
	
	try{
		
	
	head = new JLabel ("Creditpointrechner");
	head.setForeground(Color.black);
	head.setFont(new Font ("Cooper black ",  Font.PLAIN , 72));
	head.setHorizontalAlignment(SwingConstants.CENTER);
	
	
	points = new JLabel ("");
	points.setForeground(Color.black);
	points.setFont(new Font ("Cooper black ",  Font.PLAIN , 50));
	points.setHorizontalAlignment(SwingConstants.CENTER);
	
	lbl1 = new JLabel (" Semester 1");
	lbl1.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	lbl2 = new JLabel (" Semester 2");	
	lbl2.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	lbl3 = new JLabel ( "Semester 3");
	lbl3.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	
	info = new JCheckBox("Informatik 1");
	info.setOpaque(false);
	info.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	info.addItemListener(new InfoListener());
	
	
	info2 = new JCheckBox("Informatik 2");
	info2.setOpaque(false);
	info2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	info.addItemListener(new InfoListener());
	
	info3 = new JCheckBox("Informatik 3");
	info3.setOpaque(false);
	info3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	design = new JCheckBox("Design 1");
	design.setOpaque(false);
	design.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	design2 = new JCheckBox("Design 2");
	design2.setOpaque(false);
	design2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	design3 = new JCheckBox("Design 3");
	design3.setOpaque(false);
	design3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	cad = new JCheckBox("CAD 1");
	cad.setOpaque(false);
	cad.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	cad2 = new JCheckBox("CAD 2");
	cad2.setOpaque(false);
	cad2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	mathe = new JCheckBox("Mathe 1");
	mathe.setOpaque(false);
	mathe.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	mathe2 = new JCheckBox("Mathe 2");
	mathe2.setOpaque(false);
	mathe2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	mathe3 = new JCheckBox("Mathe 3");
	mathe3.setOpaque(false);
	mathe3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	steuerung = new JCheckBox("Steuerungskompentenzen 1");
	steuerung.setOpaque(false);
	steuerung.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	steuerung2 = new JCheckBox("Steuerungskompentenzen 2");
	steuerung2.setOpaque(false);
	steuerung2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	steuerung3 = new JCheckBox("Steuerungskompentenzen 3");
	steuerung3.setOpaque(false);
	steuerung3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	
	pnlcenter = new JPanel ();
	pnlcenter.setOpaque(false);
	
	zurueck = new JButton();
	Image rueck  = ImageIO.read(getClass().getResource("back.png"));
	zurueck.setIcon(new ImageIcon(rueck));
	zurueck.setBorder(null);
	zurueck.setContentAreaFilled(false);
	
	pnlnorth = new JPanel ();
	pnlnorth.setOpaque(false);
	
	
	cprechner = ImageIO.read(getClass().getResourceAsStream("cprechner.jpg"));
	backgroundpanel = new BackgroundPanel(cprechner);
	} catch (IOException e){
		
		e.printStackTrace();
	}
	
	
}

public class InfoListener implements ItemListener {

	
	@Override
	public void itemStateChanged(ItemEvent e) {
		
		int aktuell = 0;
		int [] CP = new int [11];
		CP [0] = 4;
		CP [1] = 5;
		CP [2] = 6;
		CP [3] = 7;
		CP [4] = 8;
		CP [5] = 9;
		CP [6] = 10;
		CP [7] = 11;
		CP [8] = 14;
		CP [9] = 15;
		CP [10] = 30;
		
		
		

if (info.isSelected() == true)
{
	aktuell = CP[5] + aktuell;
	points.setText("Sie haben  " + aktuell + " Creditpoints");
	}
	
if (info.isSelected() == false)
{
	aktuell = aktuell - CP[5];
    points.setText ("Sie haben " + aktuell + "Creditpoints");
}

	
	
	
	if (info2.isSelected() == true)
	{
		aktuell = aktuell + CP[5];
	points.setText("Sie haben " + aktuell + "Creditpoints");
	}
	}
		
		
	


	
	
}
	
	
		

	
	

	
	



	private void layoutWidgets() {
	
	backgroundpanel.setLayout(new BorderLayout());
	pnlcenter.setLayout(new GridLayout (6,3));
	pnlnorth.setLayout(new FlowLayout());
	
	pnlcenter.add(lbl1);
	pnlcenter.add(lbl2);
	pnlcenter.add(lbl3);
	pnlcenter.add(info);
	pnlcenter.add(info2);
	pnlcenter.add(info3);
	
	pnlcenter.add(mathe);
	pnlcenter.add(mathe2);
	pnlcenter.add(mathe3);
	pnlcenter.add(design);
	pnlcenter.add(design2);
	pnlcenter.add(design3);
	
	pnlcenter.add(steuerung);
	pnlcenter.add(steuerung2);
	pnlcenter.add(steuerung3);
	pnlcenter.add(cad);
	pnlcenter.add(cad2);
	
	pnlnorth.add(zurueck);
	pnlnorth.add(Box.createVerticalGlue());
	pnlnorth.add(head);
	
	backgroundpanel.add(pnlnorth, BorderLayout.NORTH);
	backgroundpanel.add(points, BorderLayout.SOUTH);
	backgroundpanel.add(pnlcenter ,BorderLayout.CENTER);
	
	add(backgroundpanel);
	
	backgroundpanel.setPreferredSize(new Dimension(cprechner
			.getWidth(null), cprechner.getHeight(null)));
	
	
	zurueck.addActionListener(new ActionListener() {
		
		
	
		
		
		public void actionPerformed(ActionEvent arg0) {
			CardLayout cl = (CardLayout) panelcontainer.getLayout();
			c15.show(panelcontainer, "9");
			
			
		}
	});
	
	
	
}



}


Das mit der -9 ist mir bewusst und das hätte ich später noch geändert. Das Ding ist, dass ich noch Anfänger in der Materie bin und mir ein wenig die Erfahrung fehlt, was wie möglich ist. Für mich erschien dieser Ansatz nunmal Gedanklich her am logischsten. Nur an der Umsetzung haperts ein wenig.
 

kaoZ

Top Contributor
Zur Umsetzung , du solltest dein Int Array als Instanzvariable deklarieren, und im Konstuktor initialisieren.

Du machst dieses in einer Methode deines Listeners, lokal und an der Falschen stelle.

so kannst du von außen nicht darauf zugreifen.

Zur Lösung ,

-Ansatz 1 (per if anweisungen):

Java:
public class Foo implements /*Hier der von dir gewählte Listener*/{

int creditPoints; //<- instanzvariable , wird vom Compiler standartmäßig mit "0" initialisiert

Foo(){
  //Standartkonstuktor, hier sollte Initialisiert werden , insofern kein Initialisierungsblock vorhanden
}

//...mehr Code

*/Dieser Code kommt in die actionPerformedMethode, oder in die deines gewählten Listeners */
if(box1.isSelected()){

  creditPoints = 9;

}
else if(box2.isSelected()){

  creditPoints = 18;
}
}

-Ansatz 2 (Tenärer Operator) :
Java:
*/Dieses ist eine andere Form einer "if-anweisung", 
 *hier wird geprüft ob die boolsche bedingung wahr/falsch ist und ein dem entsprechender Wert zurück geliefert, mit dem du weiterarbeiten könntest.*/

int creditPoints1, creditPoints2;

@Override
	public void actionPerformed(ActionEvent e) {

		creditPoints1 = (box.isSelected()) ? 9 : 0;	//Liefert 9 zurück wenn selektiert 0 wenn nicht
		
		creditPoints2 = (box1.isSelected()) ? 18 : 0; // Liefert 18 zurück wenn selektiert 0 wenn nicht
               //usw.
}
		
	}
 
Zuletzt bearbeitet:

Ratzefummel

Mitglied
Ok. alles klar. habs jetzt soweit umgeschrieben und es sieht so auch viel besser aus. :)

Komisch ist nun, dass wenn ich die erste checkbox aktiviert habe, alles gut läuft. aber sobald ich die zweite checkbox aktiviere passiert zunächst nichts. erst wenn ich die erste checkbox deaktiviert habe passiert was. ???:L

Gibt es da irgendeinen weg?

Danke schon mal, für die Mühe!
 

kaoZ

Top Contributor
ich weiß nicht wie dein Code jetzt aussieht aber er sollte dem hier ähneln :

[TIPP]
normalerweise setzt man hier die sichtbarkeit von creditPoints auf Private und erstellt getter & setter
[/TIPP]

[EDIT]
PS: kleiner Tipp am Rande : wenn du bei den ganzen CheckBoxen den Code nicht ins unermessliche aufblähen willst kannst du diese auch so deklarieren
Code:
JCheckBox box1,box2,box3;
<-- natürlich nur ein Beispiel :)

[/EDIT]

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

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Foo implements ActionListener{

	
	JFrame frame;
	JPanel panel;
	JCheckBox box,box1;
	JLabel eins,zwei;
	String out;
	int creditPoints;
	
	int zähler;
	
	
	Foo(){
		
		frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		eins = new JLabel("Informatik 1 ");
		zwei = new JLabel("Informatik 2 ");
		
		panel = new JPanel();
		
		box = new JCheckBox();
		box1 = new JCheckBox();
		
		box.addActionListener(this);
		box1.addActionListener(this);
		
		panel.add(eins);
		panel.add(box);
		panel.add(zwei);
		panel.add(box1);
		
		frame.add(panel);
		frame.pack();
		
		show();
		
	}
	void show(){
		frame.setVisible(true);
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {

		creditPoints = (box.isSelected()) ? 9 : 0;	
		
		creditPoints = (box1.isSelected()) ? 18 : 0;
		System.out.println(creditPoints);
		
                //usw... bei Lösung über Tenären Operator
	}

	public static void main(String[]args){
		new Foo();
	}
}
 
Zuletzt bearbeitet:

Ratzefummel

Mitglied
Ja so hab ich´s auch nur mit mit if. Kann es sein, dass da irgendwie ne schleif drum herum muss?

Java:
public void itemStateChanged(ItemEvent e) {
		// TODO Auto-generated method st		
		
		
				

		if (info.isSelected())
		{
			aktuell = 9;
			points.setText("Sie haben  " + aktuell + " Creditpoints");
			}
			
		else 
		{ aktuell = 0;
		
		}
		
		
			
			
			if (info2.isSelected() )
		{
			aktuell = aktuell + 9;
				points.setText("Sie haben " + aktuell + "Creditpoints");
		}
			
			else
			{ aktuell = 0;
			
			}

			
			
			
		
			}
 

kaoZ

Top Contributor
Das Problem ist das du in dem Fall erst zur laufzeit die if abfrage machst, vor ausführung deiner rechnung müsste geprüft werden welche box aktiv ist :)

Beispiel folgt...
 

Ratzefummel

Mitglied
So. Also ich glaube ich hab hier ein ganz grundsätzliches problem. bei dem Programm ist es so, dass er ja nur die check boxen addiert, die direkt hinter ihm folgen. hier nochmal die klasse mit allen Checkboxen und if abfragen:
Java:
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Checkbox;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;


public class Creditpointrechner extends JPanel implements ItemListener {

private BackgroundPanel backgroundpanel;
private JLabel head;
private JLabel points;
private JCheckBox info;
private JCheckBox info2;
private JCheckBox info3;
private JCheckBox design;
private JCheckBox design2;
private JCheckBox design3;
private JCheckBox cad;
private JCheckBox cad2;
private JCheckBox steuerung;
private JCheckBox steuerung2;
private JCheckBox steuerung3;
private JCheckBox mathe;
private JCheckBox mathe2;
private JCheckBox mathe3;
private JScrollPane spane;
private JLabel lbl1;
private JLabel lbl2;
private JLabel lbl3;
private JButton zurueck;
private Image cprechner;
private JPanel pnlnorth;
private JPanel pnlcenter;
private JPanel pnlsouth;
private CardLayout c15;
private JPanel panelcontainer;
int aktuell;
int [] CP;


public Creditpointrechner  (CardLayout c15,JPanel panelcontainer) {
	
	this.c15 = c15;
	this.panelcontainer = panelcontainer;
	createWidgets();
	layoutWidgets();
	int [] CP = new int [11];
	
	
	
	
}


public void createWidgets() {
	
	
	
	
	
	try{
		
	
	head = new JLabel ("Creditpointrechner");
	head.setForeground(Color.black);
	head.setFont(new Font ("Cooper black ",  Font.PLAIN , 72));
	head.setHorizontalAlignment(SwingConstants.CENTER);
	
	
	points = new JLabel ("");
	points.setForeground(Color.black);
	points.setFont(new Font ("Cooper black ",  Font.PLAIN , 50));
	points.setHorizontalAlignment(SwingConstants.CENTER);
	
	lbl1 = new JLabel (" Semester 1");
	lbl1.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	lbl2 = new JLabel (" Semester 2");	
	lbl2.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	lbl3 = new JLabel ( "Semester 3");
	lbl3.setFont(new Font ("Cooper black ",  Font.PLAIN , 30));
	
	info = new JCheckBox("Informatik 1");
	info.setOpaque(false);
	info.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	info.addItemListener(this);
	
	
	info2 = new JCheckBox("Informatik 2");
	info2.setOpaque(false);
	info2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	info2.addItemListener(this);
	
	info3 = new JCheckBox("Informatik 3");
	info3.setOpaque(false);
	info3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	info3.addItemListener(this);
	
	design = new JCheckBox("Design 1");
	design.setOpaque(false);
	design.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	design.addItemListener(this);
	
	design2 = new JCheckBox("Design 2");
	design2.setOpaque(false);
	design2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	design2.addItemListener(this);
	
	design3 = new JCheckBox("Design 3");
	design3.setOpaque(false);
	design3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	design3.addItemListener(this);
	
	cad = new JCheckBox("CAD 1");
	cad.setOpaque(false);
	cad.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	cad.addItemListener(this);
	
	cad2 = new JCheckBox("CAD 2");
	cad2.setOpaque(false);
	cad2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	cad2.addItemListener(this);
	
	mathe = new JCheckBox("Mathe 1");
	mathe.setOpaque(false);
	mathe.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	mathe.addItemListener(this);
	
	mathe2 = new JCheckBox("Mathe 2");
	mathe2.setOpaque(false);
	mathe2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	mathe2.addItemListener(this);
	
	mathe3 = new JCheckBox("Mathe 3");
	mathe3.setOpaque(false);
	mathe3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	mathe3.addItemListener(this);
	
	steuerung = new JCheckBox("Steuerungskompentenzen 1");
	steuerung.setOpaque(false);
	steuerung.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	steuerung.addItemListener(this);
	
	steuerung2 = new JCheckBox("Steuerungskompentenzen 2");
	steuerung2.setOpaque(false);
	steuerung2.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	steuerung2.addItemListener(this);
	
	steuerung3 = new JCheckBox("Steuerungskompentenzen 3");
	steuerung3.setOpaque(false);
	steuerung3.setFont(new Font ("Cooper black ",  Font.PLAIN , 18));
	steuerung3.addItemListener(this);
	
	pnlcenter = new JPanel ();
	pnlcenter.setOpaque(false);
	
	zurueck = new JButton();
	Image rueck  = ImageIO.read(getClass().getResource("back.png"));
	zurueck.setIcon(new ImageIcon(rueck));
	zurueck.setBorder(null);
	zurueck.setContentAreaFilled(false);
	
	pnlnorth = new JPanel ();
	pnlnorth.setOpaque(false);
	
	
	cprechner = ImageIO.read(getClass().getResourceAsStream("cprechner.jpg"));
	backgroundpanel = new BackgroundPanel(cprechner);
	} catch (IOException e){
		
		e.printStackTrace();
	}
	
	
	
	
	
}


	
	
		

	
	

	
	



	private void layoutWidgets() {
	
	backgroundpanel.setLayout(new BorderLayout());
	pnlcenter.setLayout(new GridLayout (6,3));
	pnlnorth.setLayout(new FlowLayout());
	
	pnlcenter.add(lbl1);
	pnlcenter.add(lbl2);
	pnlcenter.add(lbl3);
	pnlcenter.add(info);
	pnlcenter.add(info2);
	pnlcenter.add(info3);
	
	pnlcenter.add(mathe);
	pnlcenter.add(mathe2);
	pnlcenter.add(mathe3);
	pnlcenter.add(design);
	pnlcenter.add(design2);
	pnlcenter.add(design3);
	
	pnlcenter.add(steuerung);
	pnlcenter.add(steuerung2);
	pnlcenter.add(steuerung3);
	pnlcenter.add(cad);
	pnlcenter.add(cad2);
	
	pnlnorth.add(zurueck);
	pnlnorth.add(Box.createVerticalGlue());
	pnlnorth.add(head);
	
	backgroundpanel.add(pnlnorth, BorderLayout.NORTH);
	backgroundpanel.add(points, BorderLayout.SOUTH);
	backgroundpanel.add(pnlcenter ,BorderLayout.CENTER);
	
	add(backgroundpanel);
	
	backgroundpanel.setPreferredSize(new Dimension(cprechner
			.getWidth(null), cprechner.getHeight(null)));
	
	
	zurueck.addActionListener(new ActionListener() {
		
		
	
		
		
		public void actionPerformed(ActionEvent arg0) {
			CardLayout cl = (CardLayout) panelcontainer.getLayout();
			c15.show(panelcontainer, "9");
			
			
		}
	});
	
	
	
}


	@Override
	public void itemStateChanged(ItemEvent e) {
		// TODO Auto-generated method st		
		
		
				

		if (info.isSelected())
		{
			aktuell = 9;
			points.setText("Sie haben  " + aktuell + " Creditpoints");
			}
			
		else 
		{ aktuell = aktuell + 9;
		
		}
		
		
			
			
			if (info2.isSelected() )
		{
			aktuell = aktuell + 9;
				points.setText("Sie haben " + aktuell + "Creditpoints");
		}
			
			else
			{ aktuell = 0;
			
			}
			
			if (info3.isSelected() )
			{
				aktuell = aktuell + 9;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (design.isSelected() )
			{
				aktuell = aktuell + 6;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (design2.isSelected() )
			{
				aktuell = aktuell + 5;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (design3.isSelected() )
			{
				aktuell = aktuell + 9;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (cad.isSelected() )
			{
				aktuell = aktuell + 5;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (cad2.isSelected() )
			{
				aktuell = aktuell + 5;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (mathe.isSelected() )
			{
				aktuell = aktuell + 5;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (mathe2.isSelected() )
			{
				aktuell = aktuell + 5;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (mathe3.isSelected() )
			{
				aktuell = aktuell + 5;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (steuerung.isSelected() )
			{
				aktuell = aktuell + 4;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (steuerung2.isSelected() )
			{
				aktuell = aktuell + 4;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}
			
			if (steuerung3.isSelected() )
			{
				aktuell = aktuell + 4;
					points.setText("Sie haben " + aktuell + "Creditpoints");
			}
				
				else
				{ aktuell = 0;
				
				}

			
			
			
		
			}
				
				
			


			
			
		
	
}
 

kaoZ

Top Contributor
Das sollte deine Lösung sein

Java:
@SuppressWarnings("static-access")
	@Override
	public void itemStateChanged(ItemEvent e) {
	
		if(e.getStateChange() == e.SELECTED){
			
			if(e.getItem() == box){
				creditPoints = 9;
				System.out.println(creditPoints);
			}
			else if(e.getItem() == box1){
				creditPoints = 18;
				System.out.println(creditPoints);
			}
		}
		
	}
 

Ratzefummel

Mitglied
Puhh...also irgendwie löst das das problem auch nicht, oder ich weiß nicht, wie ichs anwenden soll.
Also ich hab das jetzt alles soweit implementiert nur irgendwie klappt es nicht... .
 

kaoZ

Top Contributor
Nehmen wir mal an wir geben jedem der das Programm nutzen soll einen Credit von 10

und er wählt jetzt CheckBox1 aus wäre das hier der Fall :



je nachdem wie du die Logik jetzt implementierst kannst du auch die Zahlen zusammenzählen:



je nachdem wie oft jetzt welche CheckBox aktiviert wird, falls du es so nicht möchtest kannst du auch nach ausgabe der Punktzahl die creditPoints wieder auf 10 setzen :



[EDIT]
Was genau klappt nicht , Konkretisier mal das Problem bitte, zählt er nicht hoch ? funktioniert es nur wenn eine Bestimmte Checkbox aktiv ist ?
[/EDIT]
 
Zuletzt bearbeitet:

Ratzefummel

Mitglied
Ja, das habe ich ja gemacht. bei meinem code ist es aber doch so, dass ich bei jeder if-anweisung vorher den wert von aktuell verändern muss. also für jedes "modul" die creditpoints setzen muss. Wenn ich jetzt zum beispiel info2 nicht mehr auswähle passiert ja nichts.
Java:
if (e.getStateChange() == e.SELECTED){
	

		if (e.getItem() == info)
		{
			aktuell = 9;
			
			points.setText("Sie haben  " + aktuell  + " Creditpoints");
			}
		
			
			if (e.getItem() == info2 )
		{
				aktuell = aktuell + 9;
			
			points.setText("Sie haben " + aktuell ++ + "Creditpoints");
		}
		
}
	}
}
 

kaoZ

Top Contributor
Ok nochmal langsam , nehmen wir an du möchtest box den Wert 10 zuweisen:

Java:
	if(e.getItem() == box){
		creditPoints = 10;
		System.out.println("Ihre aktuelle Punktzahl beträgt : " + getCreditPoints());

	}

wenn jetzt jemand box 1 auswählt wird der Wert in der INSTANZVARIABLE creditPoints gespeichert, beträgt also ab diesem Zeitpunkt 10

nehmen wir weiterhin ah jemand deaktiviert box 1 und wählt jetzt box 2 der du den Wert 5 zuweisen willst:

Java:
if(e.getItem() == box){
		creditPoints =  creditPoints + 5;
		System.out.println("Ihre aktuelle Punktzahl beträgt : " + getCreditPoints());

	}

beträgt der Wert von CreditPoints ab diesem Zeitpunkt 10+5 also 15, oder wie soll dein System funktionieren ?:)

[EDIT]
Worauf möchtest du mit deiner Punktevergabe hinaus ? :)

insofern ich dir richtig verstehe willst du doch einfach nur jeder CheckBox einen bestimmten Wert zuweisen ?! und damit dann eine Punktzahlt die du an anderer Stelle festllegst erhöhen bzw verringern oder ?!
[/EDIT]
 
Zuletzt bearbeitet:

Ratzefummel

Mitglied
Genau das soll ja eben nicht passieren! :)
Wenn box 1 deaktiviert wird soll der wert von box 1 wieder abgezogen werden.
Den Rest, so wie du es erklärt hast verstehe ich ja und das funktioniert ja auch soweit.

Also wenn die box aktiviert ist soll der wert der box addiert werden und wenn deaktiviert wird soll der wert auch wieder zurückgenommen werden.
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Der untere Teil ist neu und du müsstest im Pinzip mit einer neuen If anweisung Prüfen ob deine Boxen abgewählt werden

[TIPP]per if(e.getStateChange()) == e.DESELECTED) prüfst du ob und welche box wieder abgewählt wird und ziehst die gleiche anzahl an Credits vom Punktestand wieder ab[/TIPP]

Java:
	if(e.getStateChange() == e.SELECTED){
			
			if(e.getItem() == box){
				setCreditPoints(9);
				punkteStand = punkteStand + getCreditPoints();
				System.out.println("Ihre aktuelle Punktzahl beträgt : " + getPunkteStand());
			}
			
		
			if(e.getItem() == box1){
				setCreditPoints(5);
				punkteStand = punkteStand + getCreditPoints(); // ADDIEREN
				System.out.println("Ihre aktuelle Punktzahl beträgt : "  + getPunkteStand());
			}
			
		}
                /* DAS HIER IST DER NEUE CODE (Funktioniert auch )*/
		if(e.getStateChange() == e.DESELECTED){

			if(e.getItem() == box){
				setCreditPoints(9);
				punkteStand = punkteStand - getCreditPoints();  // SUBTRAHIEREN :)
				System.out.println("Ihre aktuelle Punktzahl beträgt : " + getPunkteStand());
			}
		}

So kannst du beim Selektieren deine creditPoints auf deinen punktestand addieren, und beim deselektieren subtrahiert er automatisch die zuvor hinzuaddierten Punkte, hoffe das kommt der Lösung deines Problems nahe :)

Hier nochmal der vollständige Code :

Java:
package versuche;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Foo implements ItemListener{

	
	JFrame frame;
	JPanel panel;
	JCheckBox box,box1;
	JLabel eins,zwei;
	String out;
	private int creditPoints;
	private int punkteStand;
	
	int zähler;
	
	
	Foo(){
		frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		eins = new JLabel("Steuerrung 1 ");
		zwei = new JLabel("Informatik 2 ");
		
		panel = new JPanel();
		
		box = new JCheckBox();
		box1 = new JCheckBox();
		
		box.addItemListener(this);
		box1.addItemListener(this);
		
		panel.add(eins);
		panel.add(box);
		panel.add(zwei);
		panel.add(box1);
		frame.add(panel);
		frame.pack();
		
		setPunkteStand(30);
		
		show();
		
	}
	void show(){
		frame.setVisible(true);
	}
	
	void rechnen(){
		
	}
	
	@SuppressWarnings("static-access")
	@Override
	public void itemStateChanged(ItemEvent e) {
	
		if(e.getStateChange() == e.SELECTED){ // Beim Auswählen ADDIEREN
			
			if(e.getItem() == box){
				setCreditPoints(9);
				punkteStand = punkteStand + getCreditPoints();
				System.out.println("Ihre aktuelle Punktzahl beträgt : " + getPunkteStand());
			}
			
		
			if(e.getItem() == box1){
				setCreditPoints(5);
				punkteStand = punkteStand + getCreditPoints();
				System.out.println("Ihre aktuelle Punktzahl beträgt : "  + getPunkteStand());
			}
			
		}
		if(e.getStateChange() == e.DESELECTED){ // beim Abwählen SUBTHRAHIEREN
			
			if(e.getItem() == box){
				setCreditPoints(9);
				punkteStand = punkteStand - getCreditPoints();
				System.out.println("Ihre aktuelle Punktzahl beträgt : " + getPunkteStand());
			}
			if(e.getItem() == box1){
				setCreditPoints(5);
				punkteStand = punkteStand - getCreditPoints();
				System.out.println("Ihre aktuelle Punktzahl beträgt : "  + getPunkteStand());
			}
		}

		
	}
	public int getCreditPoints(){
		return creditPoints;
	}
	public void setCreditPoints(int p){
		this.creditPoints = p;
	}
	public int getPunkteStand(){
		return punkteStand;
	}
	
	public void setPunkteStand(int i){
		this.punkteStand = i;
	}

	public static void main(String[]args){
		new Foo();
	}
	
}
 
Zuletzt bearbeitet:

Ratzefummel

Mitglied
Vielen Dank erstmal für deine Unterstützung heute :toll:....Denke, dass ich das morgen hinkriegen werde. Falls es noch Probleme geben sollte werde ich mich hier nochmal melden! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Check Java Basics - Anfänger-Themen 25
F Check ob ein Programm installiert ist Java Basics - Anfänger-Themen 4
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
timbeau Javax.Mail: Check this out Java Basics - Anfänger-Themen 10
JTeacher Check your skills Java Basics - Anfänger-Themen 8
B de-Domain Whois-Check? Java Basics - Anfänger-Themen 9
Dit_ "Check for Updates" Funktion Java Basics - Anfänger-Themen 10
I Primzahlen check, String prüfen lassen. Java Basics - Anfänger-Themen 6
A Die Werte der ersten beiden markierten Check-Boxen registrieren Java Basics - Anfänger-Themen 11
Developer_X Wie kann man Check Boxes checken? Java Basics - Anfänger-Themen 10
G check-funktion mit java schreiben! Java Basics - Anfänger-Themen 3
V Beginner question with check true value??? Java Basics - Anfänger-Themen 3
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben