Swing Kalender soll auf Buttondruck einen Monat weiterblättern

jimmykimmy

Mitglied
Hallo zusammen. Ich habe einen kleinen Kalender gemacht. Das Ganze ist sehr simpel gehalten, da ich in Sachen Java noch relativ neu bin.
Ich habe unter dem Kalender einen VOR und ZURÜCK Button. Der Knopfdruck sagt mit bisher nur, dass er jeweils einen Monat vor bzw. zurück gehen soll (textbasiert).
Nun möchte ich aber gerne, dass sich der Kalender dementsprechend ändert. Ich weiß nur leider nicht genau wie ich es anstellen kann. Muss man das über einen Observer lösen? Wenn ja, muss ich dann nicht einiges umstrukturieren? Ich hoffe jemand kann einem Neuling da den ein oder anderen Tipp geben?!

Java:
package calendar;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import java.util.Calendar;
import java.util.GregorianCalendar;

import java.awt.event.*;

public class test2 extends javax.swing.JFrame {
	private JPanel jPanel1;
	private JPanel jPanel2;
	private JLabel jLabel1;
	private JButton jButtonBack;
	private JButton jButtonForward;
	private ActionListener Listener;
	private int year, month, day;

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				test2 inst = new test2();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public test2() {
		super();
		initGUI();
	}
	
	public ActionListener CreateButtonActionListener(){		
		Listener = new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				JButton b = (JButton) evt.getSource();
				
				System.out.println("go " + b.getName());
			}
		};
		
		return Listener;
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				// unten liegendes jpanel anlegene
				jPanel1 = new JPanel();
				jPanel2 = new JPanel();
				// und an das haupt pane andocken
				getContentPane().add(jPanel1, BorderLayout.CENTER);
				getContentPane().add(jPanel2, BorderLayout.SOUTH);
				
				// gridbaglayout anlegen
				GridBagLayout jPanel1Layout = new GridBagLayout();
				// einstellungen für das gridbaglayout setzen
				jPanel1Layout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1};
				jPanel1Layout.rowHeights = new int[] {7, 7, 7, 7, 7};
				jPanel1Layout.columnWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1};
				jPanel1Layout.columnWidths = new int[] {7, 7, 7, 7, 7, 7, 7};
				// und anschließen das gridbaglayout mit dem jpanel verknüpfen
				jPanel1.setLayout(jPanel1Layout);
				
				// kalendar
				GregorianCalendar calendar_now = new GregorianCalendar();
				year = calendar_now.get(Calendar.YEAR);
				month = calendar_now.get(Calendar.MONTH)+1;
				day = calendar_now.get(Calendar.DAY_OF_MONTH);

				System.out.println("Aktuelles datum: " + year+"/"+month+"/"+day);
				
				GregorianCalendar calendar = new GregorianCalendar(year, month-1, day);
		        int max_days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

		        
		        /* in den süden folgendes einbinden */
				
				// zurück button
				jButtonBack = new JButton();
				jPanel2.add(jButtonBack);
				jButtonBack.setName("back to " + ((calendar.get(Calendar.MONTH)+1)-1) + "/" + calendar.get(Calendar.YEAR));
				jButtonBack.addActionListener(CreateButtonActionListener());
				jButtonBack.setText("<<");
				
				// ausgabe welcher monat ist
				jLabel1 = new JLabel();
				jPanel2.add(jLabel1);
				jLabel1.setText("" + (calendar.get(Calendar.MONTH)+1) + "/" + calendar.get(Calendar.YEAR));
				
				// vor button
				jButtonForward = new JButton();
				jPanel2.add(jButtonForward);
				jButtonForward.setName("forward to " + ((calendar.get(Calendar.MONTH)+1)+1) + "/" + calendar.get(Calendar.YEAR));
				jButtonForward.addActionListener(CreateButtonActionListener());
				jButtonForward.setText(">>");
				
				int spalte = 0;
				int zeile = 0;
				for(int day=1; day <= max_days; day++) {
					jLabel1 = new JLabel();
					jPanel1.add(jLabel1, new GridBagConstraints(spalte, zeile, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
					jLabel1.setText("" + day);
					if( spalte != 0 && spalte % 6 == 0) {
						spalte = 0;
						zeile++;
					} else {
						spalte++;
					}
				}
			}
			pack();
			setSize(400, 300);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
 

jimmykimmy

Mitglied
Ich weiß, dass es einige fertige Kalender gibt, allerdings möchte ich den Kalender in ein Uni-Projekt einbauen und dabei möchte ich keine fertigen Projekte einbinden.

@VfL_Freak
Schöne Grüße aus der Wüste ;-)
 

jimmykimmy

Mitglied
Ja auf den Buttons liegt ja auch bereits ein ActionListener, der auch erkennt, ob ich vor oder zurückblättern will.
Mein Problem ist mehr, dass ich nicht weiß, wie ich nun das Panel Update, dass momentan den Monat Juli anzeigt. Ich will also vorblättern und statt den Tagen des Julis sollen die Tage des Augusts angezeigt werden.
 

Michael...

Top Contributor
Hab Deinen Code nur überflogen, aber das was Du bei der Initialierung in der for Schleife mit den Labels machst müsstest Du nach jedem Monatswechsel machen - nur ohne die Labels neu zu erzeugen.

Finde Deine Vorgehensweise jetzt nicht so toll, aber wenn Du Dabei bleiben willst würde ich eine Array für die Label verwenden, über das ich dann den Inhalt der einzelnen ändern kann.
Java:
JLabel dayLabels = new JLabel[6][6];
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JavaFX Kalender AWT, Swing, JavaFX & SWT 0
P JavaFX Kalender mit Kacheln für Ereignisse AWT, Swing, JavaFX & SWT 4
K Stundenplan, Kalender Methoden AWT, Swing, JavaFX & SWT 2
B Java Kalender AWT, Swing, JavaFX & SWT 10
M Kalender mit Mohnatsansicht AWT, Swing, JavaFX & SWT 2
B Kalender per JTable AWT, Swing, JavaFX & SWT 26
P SWT Übersicht a la Outlook Kalender AWT, Swing, JavaFX & SWT 3
E Kalender mit der Möglichkeit mehrere Tage zu selectieren AWT, Swing, JavaFX & SWT 3
Landei Welche Kalender-Komponente? AWT, Swing, JavaFX & SWT 3
A Bei Eingabe eines Datums ein Kalender aufpoppen lassen AWT, Swing, JavaFX & SWT 2
G Kalender aufpoppen lassen AWT, Swing, JavaFX & SWT 6
S Kalender aktualisieren AWT, Swing, JavaFX & SWT 3
X Kalender einbauen AWT, Swing, JavaFX & SWT 8
M [Swing] Kalender mit JTable / Einfärben von Zellen AWT, Swing, JavaFX & SWT 10
J Kalender-App mit tagesübergreifenden Einträgen AWT, Swing, JavaFX & SWT 25
R Termin Kalender Bibliothek gesucht AWT, Swing, JavaFX & SWT 4
K Kalender GUI AWT, Swing, JavaFX & SWT 2
L Ein Kalender in Swing ? Vorgefertigter Dialog ? AWT, Swing, JavaFX & SWT 3
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
Zeppi Swing Button soll Spiel zurücksetzen AWT, Swing, JavaFX & SWT 5
A Titelleiste soll Pfad ausgeben AWT, Swing, JavaFX & SWT 16
G Eintrag soll nur einmal in Listview zu sehen sein AWT, Swing, JavaFX & SWT 3
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
W JavaFX CSS - was soll mir das sagen? AWT, Swing, JavaFX & SWT 2
D JavaFX Menu soll nicht bei jedem Click verschwinden AWT, Swing, JavaFX & SWT 8
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
O Soll ich einen JEditorPane verwenden ? AWT, Swing, JavaFX & SWT 5
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
S JavaFX Node soll auch nach Skalierung zentriert platziert sein AWT, Swing, JavaFX & SWT 3
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
M JavaFX StackedBarChart y-Axis soll nur Integerwerte anzeigen AWT, Swing, JavaFX & SWT 1
A Slider soll einen Wert übergeben AWT, Swing, JavaFX & SWT 1
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
V Swing Button soll unter anderem Button sein AWT, Swing, JavaFX & SWT 2
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
J JavaFX Tabelle soll ganze Seite ausfüllen AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
T SWT Button soll nur sichbar sein,wenn im Textfeld der Focus ist AWT, Swing, JavaFX & SWT 4
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
windl Warum soll ich zu JavaFX? AWT, Swing, JavaFX & SWT 18
H Java3D, ViewP Translattform soll sich nach einerformgroup richten. AWT, Swing, JavaFX & SWT 5
S Hauptfenster soll geöffnet bleiben AWT, Swing, JavaFX & SWT 4
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
F Swing JTextfield Beispieltext soll nach Klick verschwinden AWT, Swing, JavaFX & SWT 3
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
J Swing String soll als Variable dienen AWT, Swing, JavaFX & SWT 11
M EditorPane Inhalt anders als er soll! AWT, Swing, JavaFX & SWT 2
C LayoutManager Grafik soll nicht im GridLayout Skalieren AWT, Swing, JavaFX & SWT 3
M Swing ActionEvent soll von Anderem ActionEvent abhängen AWT, Swing, JavaFX & SWT 3
J Button soll nach Klick Text ändern und Programm in 3 Sekunden beenden AWT, Swing, JavaFX & SWT 6
H Swing Button Klick soll "Untermenü-Buttons" erzeugen AWT, Swing, JavaFX & SWT 2
Z Swing JPanel soll größer werden als Parent Container (überlappen) AWT, Swing, JavaFX & SWT 5
D Swing jSlider soll selber weiterwandern, je nach zeit der musik AWT, Swing, JavaFX & SWT 5
A SWT Tooltip soll nicht verschwinden, solange User mit Maus auf Control ist AWT, Swing, JavaFX & SWT 5
D Swing JProgressBar soll ende erkennen AWT, Swing, JavaFX & SWT 4
S JVM von Oracle/Sun soll für AWT/SWING Elemente die die Optimierungen der NVidia Treiber verwenden AWT, Swing, JavaFX & SWT 3
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
Z Bei Klick auf JButton soll ein anderer JButton erscheinen AWT, Swing, JavaFX & SWT 4
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
X Swing Bei Buttonklick soll PopupMenu erscheinen AWT, Swing, JavaFX & SWT 2
M Dialog soll etwas an "Oberklasse" übergeben AWT, Swing, JavaFX & SWT 3
qwerqer Swing Anwendung soll blinken (Taskleiste) AWT, Swing, JavaFX & SWT 3
2 Anfänger problem: Buttenklick soll reagieren AWT, Swing, JavaFX & SWT 9
D JTextField soll nur Integer als Eingabewert annehmen AWT, Swing, JavaFX & SWT 5
N JFreeChart: Plot soll mit skalieren AWT, Swing, JavaFX & SWT 5
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
T disabled Checkbox soll trotzdem Focus bekommen AWT, Swing, JavaFX & SWT 9
R Button soll nach dem er gedrückt wurde auf setVisible(false) gestellt werden. AWT, Swing, JavaFX & SWT 3
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
P 2D-Grafik String übergeben, PNG soll rauskommen AWT, Swing, JavaFX & SWT 9
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
-horn- WorldWindJava+JOGL soll einen animierten Graphen anzeigen, wie? AWT, Swing, JavaFX & SWT 4
Y JRadioButton soll JTextBox aktivieren UND deaktivieren AWT, Swing, JavaFX & SWT 3
M Swing JTable soll auf ArrayList zugreifen AWT, Swing, JavaFX & SWT 8
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
H Applet JApplet soll neues Tab im Browser öffnen AWT, Swing, JavaFX & SWT 2
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
S Swing JTabbedPane: Inhalt soll oben links anfangen AWT, Swing, JavaFX & SWT 6
kodela Clipboard übernimt mehr als es soll AWT, Swing, JavaFX & SWT 15
N Button soll die Größ eines Icons haben AWT, Swing, JavaFX & SWT 5
M Menübar soll bestehen bleiben, wenn andere Masken geöffnet werden AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben