-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCalendarView.java
More file actions
154 lines (124 loc) · 3.36 KB
/
CalendarView.java
File metadata and controls
154 lines (124 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.*;
import javax.swing.event.ChangeListener;
public class CalendarView{
public JPanel getPanel() {
return panel;
}
public JPanel getMonth()
{
return month;
}
private JPanel panel;
private JPanel month;
private ArrayList<JButton> days;
private String dateClicked;
private ArrayList<ChangeListener> listeners;
public CalendarView(GregorianCalendar c)
{
listeners = new ArrayList<ChangeListener>();
dateClicked = "1";
//JFrame jeff = new JFrame();
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JPanel buttonPanel = new JPanel();
JButton advance = new JButton(">");
JButton back = new JButton("<");
month = new JPanel();
month.setLayout(new GridLayout(7, 7));
days = new ArrayList<JButton>();
JLabel label = new JLabel();
label.setText(getMonth(c) + " " + Integer.toString(c.get(Calendar.YEAR)));
printCalendarDays(c);
buttonPanel.add(label);
buttonPanel.add(back);
buttonPanel.add(advance);
panel.add(buttonPanel);
panel.add(month);
/*jeff.add(month);
jeff.setVisible(true);
jeff.setSize(400, 400);
jeff.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
/*advance.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
c.add(Calendar.MONTH, 1);
System.out.println(getMonth(c));
System.out.println(c.get(Calendar.MONTH));
printCalendarDays(new GregorianCalendar(2019, c.get(Calendar.MONTH), 1));
month.repaint();
}
});
back.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
c.add(Calendar.MONTH, -1);
System.out.println(getMonth(c));
printCalendarDays(c);
month.repaint();
}
}); */
}
public void addChangeListener(ChangeListener listener)
{
listeners.add(listener);
}
public String getDateClicked() {
return dateClicked;
}
public ArrayList<JButton> getDays() {
return days;
}
public void printCalendarDays(GregorianCalendar g)
{
String[] daysOfWeek = {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"};
for (int i = 0; i < 7; i++)
{
month.add(new JLabel(daysOfWeek[i]));
}
int day = 1;
while (day != getDays(g))
{
month.add(new JLabel(" "));
day++;
}
ActionListener listeners = new ActionListener(){
public void actionPerformed(ActionEvent e)
{
JButton sourceButton = (JButton)e.getSource();
dateClicked = sourceButton.getText();
System.out.println(dateClicked);
}
};
day = 1;
int last = g.getActualMaximum(Calendar.DAY_OF_MONTH);
JButton button;
while (day != last + 1)
{
button = new JButton(Integer.toString(day));
button.addActionListener(listeners);
days.add(button);
month.add(button);
day++;
}
System.out.println(dateClicked);
}
public int getDays(GregorianCalendar cal)
{
GregorianCalendar x = new GregorianCalendar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), 1);
return x.get(Calendar.DAY_OF_WEEK);
}
public String getMonth(GregorianCalendar cal)
{
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int m = cal.get(Calendar.MONTH);
return months[m];
}
}