kalender

Status
Nicht offen für weitere Antworten.

affi0905

Mitglied
hallo
ich versuche eine variable in einer klasse von einer anderen klasse aus zu überschreiben. wie kann ich realisieren, dass die überschriebene variable dann in der klasse erhalten bleibt.
 

Oni

Top Contributor
hmm, was meinst du? etwa so?
Code:
klasse eins{
 int var1 = 0;
}

klasse zwei{
 int var2 = 0
}

wenn ich dich richtig verstanden habe willst du jetzt aus der klasse zwei heraus die variable in der klasse eins überschreiben, abergleichzeitig eine kopie von dieser variablen in klasse zwei speichern.
sehe ich das richtig?

wenn ja schreib dir setter / getter methoden
 

affi0905

Mitglied
Ich habe eine Klasse mit Kalenderdaten und eine Klasse, in der alles angezeigt wird.
Ich muß nun aus der Klasse mit den ansichten die Variable in der Klasse mit den Daten überschreiben, welche den Monat setzt, damit ich die Monate hin und her schalten kann.
Also aus Klasse 2 eine Variable in Klasse 1 überschreiben. Wenn diese Variable erneut aufgerufen wird, dann soll sie den neuen Wert haben.
 

The_S

Top Contributor
Schreib dir getter und setter Methoden. So macht man das normalerweiße und nicht auf die Variable direkt zugreifen. Oder wo genau liegt dein Problem?
 

Oni

Top Contributor
affi0905 hat gesagt.:
Ich habe eine Klasse mit Kalenderdaten und eine Klasse, in der alles angezeigt wird.
Ich muß nun aus der Klasse mit den ansichten die Variable in der Klasse mit den Daten überschreiben, welche den Monat setzt, damit ich die Monate hin und her schalten kann.
Also aus Klasse 2 eine Variable in Klasse 1 überschreiben.

dann schreib dir eine setter methode in klasse1. etwa so

Code:
class Eins{
  int var = 1;

  public void setVariable(int var){
    this.var = var;
  }
}

class Zwei{
  Eins x = new Eins();
  x.setVariable(deinNeuerWert);
}

affi0905 hat gesagt.:
Wenn diese Variable erneut aufgerufen wird, dann soll sie den neuen Wert haben.

den satz verstehe ich nicht auf welche var bezieht er sich? was wird erneut aufgrufen?
 

affi0905

Mitglied
Ich habe ein final String [], in dem die Monate gespeichert sind.

Beim ersten Start wird mit cal.get(Calender.MONTH) die Variable int nMonat auf den Wert des aktuellen Monats gesetzt.

nMonat greift auf das String [] zu und der Monat wird ausgegeben.

Jetzt muß ich von einer anderen Klasse aus die Variable nMonat überschreiben, so dass der nächste bzw. der vorige Monat ausgegeben werden kann.
 

The_S

Top Contributor
Wie gesagt: Getter und Setter:

Hier noch ein beispiel:

Code:
public class GetterSetterTest {
	
	public static void main(String[] args) {
		
		String str = null;
		GetSet gs = new GetSet();
		str = gs.getOutprint();
		if (!str.equals("Richtig")) {
			gs.setOutprint("Richtig");
		}
		gs.doOutprint();
	}
}

class GetSet {
	
	String outprint = "Falsch";
	
	public void setOutprint(String str) {
		
		outprint = str;
	}
	
	public String getOutprint() {
		
		return outprint;
	}
	
	public void doOutprint() {
		
		System.out.println(outprint);
	}
}
 

affi0905

Mitglied
Ich habe es so gemacht, wie Du gesagt hast. Das Problem ist, dass wenn die Klasse mit dieser Variablen aufgerufen wird sich das Programm wieder mit nMonat = cal.get(Calendar.MONTH) den aktuellen Monat holt.
 

Oni

Top Contributor
zeig mal deinen code das ist dann einfacher.

wenn du vermeiden willst das dein programm das macht, kannst du eine if-abfrage drumherum bauen und ein flag setzen.
 

affi0905

Mitglied
public class Kdaten{

int zTag, wTag, nMonat, zJahr;
String nameMonat;
int mTage;
String [] tagName;
GregorianCalendar cal;
int setzeMonat;
Color monatFarbe;
final String [] monate = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};

//////////////////////////////////////////////////////////
int zahl;
int [] monatIndex;
//////////////////////////////////////////////////////////

public Kdaten(){

cal = new GregorianCalendar();

cal.set(Calendar.DATE,1); // der erste tag im monat
zTag = cal.get(Calendar.DATE); // aktuellen tag ausgeben lassen

////////////////////////////////////////////////////////////////////
monatIndex = new int [12];
for(int i = 0; i < 12; i++){

monatIndex = i;
}
////////////////////////////////////////////////////////////////////
// setzeMonat = monatSetzen();

// cal.set(Calendar.MONTH,1); <---variable anstelle von 1 muß von aussen überschrieben werden //hilfe zum setzen eines monats

nMonat = (cal.get(Calendar.MONTH) );//aktueller monat wird ausgegeben
// cal.set(Calendar.MONTH,setzeMonat);
zJahr = cal.get(Calendar.YEAR); //aktuelles jahr wird ausgegeben

nameMonat = monate[nMonat];
// nameMonat = mAnzeige(nMonat); //aufruf der funktion zur anzeige des aktuellen monatsnamen

//nameMonat = mAnzeige(nMonat); //aufruf der funktion zur anzeige des aktuellen monatsnamen

mTage = tAnzeige (nMonat); //aufruf der funktion zur feststellung der anzahl der tage im jeweiligen monat

tagName = wochentage();

das ist die klasse kdaten
 

affi0905

Mitglied
import java.awt.*;
import java.awt.event.*;

class KalenderFenster extends Frame implements ActionListener{

Kdaten daten = new Kdaten();
Button tag;

public KalenderFenster() {

setLocation(20,20);
setSize(800,520);
setTitle("Kalender");
setResizable(false);
setLayout(null);
addWindowListener(new WindowsAdapter (true));

//erstellen der menuleiste
MenuBar leiste1 = new MenuBar();

//////////////////////////////////////////////////////////////////////////
// menue 1
Menu programm = new Menu("Programm");

MenuItem mi;
MenuShortcut key;

// erstellen der shortcuts
key = new MenuShortcut(KeyEvent.VK_W);
mi = new MenuItem("Wochenansicht", key);
mi.addActionListener(this);
programm.add (mi);

key = new MenuShortcut(KeyEvent.VK_M);
mi = new MenuItem("Monatsansicht", key);
mi.addActionListener(this);
programm.add (mi);

key = new MenuShortcut (KeyEvent.VK_J);
mi = new MenuItem("Jahresansicht", key);
mi.addActionListener(this);
programm.add(mi);

key = new MenuShortcut(KeyEvent.VK_B);
mi = new MenuItem("Beenden", key);
mi.addActionListener(this);
programm.add(mi);

///////////////////////////////////////////////////////////////
// menue 2
Menu programm2 = new Menu ("Termineintrag");

key = new MenuShortcut(KeyEvent.VK_T);
mi = new MenuItem("neuer Termin", key);
mi.addActionListener(this);
programm2.add(mi);
///////////////////////////////////////////////////////////////

GridLayout grid = new GridLayout(1,3);
Panel p1 = new Panel( grid );
p1.setLocation(0,50);
p1.setSize(800,30);


Button wo = new Button("Wochenansicht");
wo.addActionListener(this);

Button mo = new Button("Monatsansicht");
mo.addActionListener(this);

Button ja = new Button("Jahresansicht");
ja.addActionListener(this);

p1.add (wo);
p1.add (mo);
p1.add (ja);

leiste1.add(programm);
leiste1.add(programm2);
setMenuBar(leiste1);

add(p1);


GridLayout monat = new GridLayout(0,7);

Panel ansicht = new Panel(monat);
ansicht.setLocation(0,163);
ansicht.setSize(800,357);
ansicht.setBackground(Color.WHITE);

//=========================================================//
/* anzeige des monats mit funktionen der vor und rückwertigen
* ansicht
**/
Panel mName = new Panel();
mName.setLocation(0,81);
mName.setSize(800,50);
mName.setBackground(Color.WHITE);

// platzhalter, ohne funktion
Label leer1 = new Label("");
leer1.setLocation(0,0);
leer1.setSize(250,50);
mName.add(leer1);

Button rev = new Button("<<");
rev.setLocation(250,0);
rev.setSize(30,50);
rev.addActionListener(this);
mName.add(rev);

// platzhalter, ohne funktion
Label leer2 = new Label("");
leer2.setLocation(280,0);
leer2.setSize(20,50);
mName.add(leer2);

//erstellen des labels zur anzeige des monatsnamens
Label mNameLabel = new Label(daten.nameMonat);
mNameLabel.setLocation(300,0);
mNameLabel.setSize(200,50);
mNameLabel.setFont (new Font ("ARIAL", 3,21));
mNameLabel.setForeground(Color.RED);
mName.add(mNameLabel);

//platzhalter, ohne funktion
Label leer3 = new Label ("");
leer3.setLocation(500,0);
leer3.setSize(20,50);
mName.add(leer3);

Button next = new Button(">>");
next.setLocation(520,0);
next.setSize(30,50);
next.addActionListener(this);
mName.add(next);

//platzhalter, ohne funktion
Label leer4 = new Label(" ");
leer4.setLocation(550,0);
leer4.setSize(250,50);
mName.add(leer4);

//=============================================================//
// funktionalitaet zur aufnahme der wochentage

Panel wochenTage = new Panel(new GridLayout (1,7));
wochenTage.setLocation(0,132);
wochenTage.setSize(800,30);

Label wochenTag;

for (int i = 0; i < 7; i++){
wochenTag = new Label(daten.tagName);
wochenTag.setFont (new Font("ARIAL", 3,16));
wochenTag.setForeground(Color.BLACK);
wochenTage.add(wochenTag);
}

///////////////////////////////////////////////////////////////////////////
// funktionalitaet zur erstellung der button für die einzelnen tage

for (int i = 1 ; i < ((daten.mTage)+1) ; i++) {

// hilfsvariable um int i zu einem string umzuwandeln,
// der dann auf dem jeweiligen button steht
String j = String.valueOf(i);

tag = new Button( j );
tag.addActionListener(this);
tag.setBackground(daten.monatFarbe);
tag.setFont(new Font ("ARIAL", 0, 14));
tag.setForeground(Color.WHITE);
ansicht.add(tag);

}

add(mName);
add(wochenTage);
add(ansicht);


setVisible(true);
}

public void actionPerformed(ActionEvent ae){

String wert = ae.getActionCommand();

if (wert == "Wochenansicht"){
System.out.println("Wochenansicht");
}

else if (wert == "Monatsansicht"){

System.out.println("Monatsansicht");

}

else if (wert == "Jahresansicht"){

System.out.println("Jahresansicht");
}

else if (wert == "Beenden"){

System.exit(0);
}

else if (wert == "neuer Termin"){

new Ntermin();
}

else if(wert == "<<"){

daten.nMonat = daten.nMonat - 1;
System.out.println("" + daten.nameMonat);


}

else if (wert == ">>"){

}

else{
String monName = new Kdaten().nameMonat;
int wJahr = new Kdaten().zJahr;
new Termin(wert, monName, wJahr);
}
}
}

In der public void actionPerformed versuche ich mit daten.nMonat = daten.nMonat - 1 die variable nMonat in der Klasse Kdaten zu überschreiben.
Jede Klasse ist in einer eigenen Datei.
 

Oni

Top Contributor
es wäre einfacher zu lesen wenn du code-tag verwendet hättest.


bau mal in klasse Kdaten diese methoden ein:
Code:
public int getMonat(){
    	return nMonat;
    }


public void setMonat(int nMonat){
    	this.nMonat = nMonat;
         nameMonat = monate[nMonat];
    }

und in der actionPerformd von kalenderfenster:
Code:
 else if(wert == "<<"){
      daten.setMonat(daten.getMonat() -1);
      System.out.println("" + daten.nameMonat);
    }

ich denke das müsste so passen.

sag mal bescheid obs klappt.
 

affi0905

Mitglied
sorry, wegen des codes:-( ich bin in sowas nicht geübt:)
die berechnung hat funtioniert, vielen lieben dank:)
weißt du vielleicht auch noch, wie ich das jedesmal neu sichtbar machen kann??
 

Oni

Top Contributor
du solltest für nameMonat auch noch eine "getter-methode" schreiben ist besserer programmier-style als "Kdaten.nameMonat"


zum anzeigen im Label
Code:
else if(wert == "<<"){
      daten.setMonat(daten.getMonat() -1);
      System.out.println("" + daten.nameMonat);

      // zum anzeigen im Label
      mNameLabel.setText(daten.nameMonat);
    }
 

affi0905

Mitglied
danke für den tipp:) ich mach das erst seit 3 wochen, und mein mein trainer hat nach 1,5 woche gemeint wir wären jetzt fertig mit den grundlagen.
morgen ist außerdem noch abgabetermin für das projekt:-(
dein code hat mir eben wieder weitergeholfen vielen vielen dank
jetzt muss ich nur noch hinbekommen, dass sich die wochentage zum jeweiligen monat ändern und das bin ich fertig
 

affi0905

Mitglied
danke für den tipp:) ich mach das erst seit 3 wochen, und mein mein trainer hat nach 1,5 woche gemeint wir wären jetzt fertig mit den grundlagen.
morgen ist außerdem noch abgabetermin für das projekt:-(
dein code hat mir eben wieder weitergeholfen vielen vielen dank
jetzt muss ich nur noch hinbekommen, dass sich die wochentage zum jeweiligen monat ändern und dann bin ich fertig
 

affi0905

Mitglied
Wenn ich die Anzeige der Label mit den Wochentagen so ändern will, wie die Monate, dann bekomme ich eine Fehlermeldung während der Laufzeit. Hast Du dafür vielleicht auch noch eine Idee?
 

Oni

Top Contributor
wenn du mir sagt welche fehlermeldung das ist, habe ich eine chance dir zu helfen ;-)
 

affi0905

Mitglied
public void actionPerformed(ActionEvent ae){
daten.setMonat(daten.getMonat() - 1);
mNameLabel.setText(daten.nameMonat);

for (int i = 0 ; i < 7; i++){
wochenTag.setText(daten.tagName;
}
}
Fehlermeldung:
java.lang.NullPointerException
at KalenderFenster.actionPerformed

in der Zeile wochenTag.setText(daten.tagName)
 

Oni

Top Contributor
schreib mal:

System.out.println("Tag: " +daten.tagName[0]);

ich vermute mal das array ist leer.
 

Oni

Top Contributor
woher bekommt das array den seine werte? das musst du dann nochmal aufrufen. du musst deinem programm ja mitteilen das sich was geändert hat.

muss irgendwas hiermit zu tun haben
Code:
mTage = tAnzeige (nMonat); //aufruf der funktion zur feststellung der anzahl der tage im jeweiligen monat

tagName = wochentage();
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
F MS365 Kalender lesen Java Basics - Anfänger-Themen 5
sserio Gregorianischer Kalender und dessen Tage. Java Basics - Anfänger-Themen 14
T simpler Kalender Java Basics - Anfänger-Themen 10
G Kalender Jahreszahlen Java Basics - Anfänger-Themen 6
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
J Gerorianischer Kalender wechselt am Freitag die Woche Warum Java Basics - Anfänger-Themen 2
N Kalender - Tag addieren gibt 31. Juni zurück Java Basics - Anfänger-Themen 3
S Hinweis zu Fehler im Kalender-Code - Aufgabe 5.3 aus Grundkurs Programmieren in Java 7. Auflage Java Basics - Anfänger-Themen 4
I c++ sexagesimal kalender Java Basics - Anfänger-Themen 5
I ical - Datei auf Server ablegen und Kalender abbonieren Java Basics - Anfänger-Themen 0
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
U Neu Julianischer Kalender Java Basics - Anfänger-Themen 2
T Kalender irrt sich Java Basics - Anfänger-Themen 8
M Kalender reloaded Java Basics - Anfänger-Themen 7
L Kalender Java Frame Java Basics - Anfänger-Themen 7
M Kalender mit Terminen Java Basics - Anfänger-Themen 24
F Problem mit selbstprogrammierten Kalender (als Übung) Java Basics - Anfänger-Themen 4
J Arrays (Kalender) Fehler im Programm Java Basics - Anfänger-Themen 2
P Date oder Kalender? Was soll man verwenden? Java Basics - Anfänger-Themen 2
K Erste Schritte Kalender selber erstellen? Java Basics - Anfänger-Themen 3
A JKomponente für Kalender Java Basics - Anfänger-Themen 5
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2
L einfachen kalender Programmieren HA! Java Basics - Anfänger-Themen 76
M Kalender Java Basics - Anfänger-Themen 15
E Methoden zusammenfassen/Kalender erstellen Java Basics - Anfänger-Themen 13
T Einfacher Kalender Java Basics - Anfänger-Themen 17
G Kalender Bean in Netbean einbinden Java Basics - Anfänger-Themen 3
F Termine in einen kalender eintragen. Java Basics - Anfänger-Themen 11
G Kalender Von String zu boolean -- NullpointerException Java Basics - Anfänger-Themen 2
S Wie Termine/Notizen in Outlook Kalender einfügen ? Java Basics - Anfänger-Themen 3
D Gibt es einen vordefinierten Kalender in java? Java Basics - Anfänger-Themen 8
H Java Kalender systemabhängig programmieren? Java Basics - Anfänger-Themen 3
B Kalender -> Termine eintragen Java Basics - Anfänger-Themen 1
W Java Kalender Java Basics - Anfänger-Themen 6
B Kalender und Wochentagswechsel Java Basics - Anfänger-Themen 6
G The serializable class Kalender does not declare a static fi Java Basics - Anfänger-Themen 5
A Kalender mit Objekten belegen Java Basics - Anfänger-Themen 3
J Wie drucke ich eine Komponente wie Kalender auf dem Drucker Java Basics - Anfänger-Themen 3
G Kalender ? Java Basics - Anfänger-Themen 6
S kalender machen Java Basics - Anfänger-Themen 40
G kalender Java Basics - Anfänger-Themen 15
P Kalender Programmieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben