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?!
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();
}
}
}